2013-05-31 34 views
1

我知道关于这个问题已经有很多关于SO的帖子。但他们都不适合我的情况。jQuery - 获取名称属性中方括号的错误

我受够了如下命名格式,多重选择输入:

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

你的属性值应在""包裹,没有必要躲避[]

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

所以翻译的选择应该是

​​

更新
您需要选择一个<select>元素,那么您需要将元素选择器input更改为select ike $('#' + formId + ' select[name="' + key + '"]').addClass('inputBoxError');

+1

+1虽然,但我想OP在说话关于选择输入,所以'select [name =“violationCategory [1] .subCategory”]''? – PSL

+0

感谢您的意见。改变单引号的位置对我有效:$(“#”+ formId +“select [name ='”+ key +“']”)。addClass('inputBoxError'); – tarares

+0

@PSL我的坏!我相应地更新了我的问题和答案! – tarares