1

我知道 SO 中已经有很多关于这个问题的帖子。但它们都不适合我的情况。

我有多个具有以下命名格式的选择输入:

select name="violationCategory[${theCount.count-1}].subCategory"

这意味着:

select name="violationCategory[0].subCategory"
select name="violationCategory[1].subCategory"
.. so on

如果满足某些条件,我必须在这些选择输入上应用特定类。所以,我尝试用这样的东西替换方括号:

if(key.indexOf("[") >= 0){
        key = $.trim(key).replace("name=^[","name=^\\[");
        key = $.trim(key).replace("].","\\]."); 
        alert(key);
        $("#" + formId + " select[name=" + key + "]").addClass('inputBoxError');                            
    } 

警报打印:

violationCategory[1\].subCategory]

我得到了错误:

Uncaught Error: Syntax error, unrecognized expression: #referralViolationForm select[name=violationCategory[1\].subCategory] 

当我将代码更改为:

key = $.trim(key).replace("].","\].");

警报打印:

violationCategory[1].subCategory]

我得到了错误:

Uncaught Error: Syntax error, unrecognized expression: #referralViolationForm select[name=violationCategory[1].subCategory] 

所以,基本上它都不管用。

任何人都可以帮助我了解如何转义方括号。

4

2 回答 2

4

您的属性值应包含在 内"",无需转义[or]

$('#' + formId + ' input[name="' + key + '"]').addClass('inputBoxError'); 

所以翻译后的选择器应该是

$('#myform input[name="violationCategory[1].subCategory"]').addClass('inputBoxError'); 

更新
你需要选择一个<select>元素,然后你需要将元素选择器更改inputselect喜欢$('#' + formId + ' select[name="' + key + '"]').addClass('inputBoxError');

于 2013-05-31T14:54:29.597 回答
1

特殊字符需要转义\。这也需要转义,所以 - 这是一个处理你的案例的例子:http: //jsfiddle.net/tb2cW/1/

这是需要转义的字符列表:~!@$%^&*()_+-=,./\';:"?><[]{}|和`

于 2013-05-31T15:12:34.180 回答