![](/img/trans.png)
[英]jQuery selector for inputs with square brackets in the name attribute
[英]jQuery - getting error for square brackets in name attribute
我知道在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]
因此,从根本上讲,它都不起作用。
谁能帮助我解决如何逃避方括号。
您的属性值应包含在""
,无需转义[
或]
$('#' + formId + ' input[name="' + key + '"]').addClass('inputBoxError');
所以翻译后的选择器应该是
$('#myform input[name="violationCategory[1].subCategory"]').addClass('inputBoxError');
更新资料
您需要选择一个<select>
元素,然后需要更改元素选择器input
以进行select
例如$('#' + formId + ' select[name="' + key + '"]').addClass('inputBoxError');
特殊字符需要用\\
进行转义。 同样需要逃避,所以-这是一个处理您的案例的示例: http : //jsfiddle.net/tb2cW/1/
以下是需要转义的字符列表: ~!@$%^&*()_+-=,./\\';:"?><[]{}|
和`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.