【问题标题】:jQuery - getting error for square brackets in name attributejQuery - 名称属性中的方括号出错
【发布时间】:2013-05-27 10:37:05
【问题描述】:

我知道 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] 

所以,基本上这两种方式都行不通。

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

【问题讨论】:

    标签: javascript jquery regex jquery-selectors


    【解决方案1】:

    你的属性值应该包裹在""中,不需要转义[或]

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

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

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

    更新
    你需要选择一个<select>元素,然后你需要把元素选择器input改成select就像$('#' + formId + ' select[name="' + key + '"]').addClass('inputBoxError');一样

    【讨论】:

    • +1 但我猜 OP 正在谈论选择输入所以select[name="violationCategory[1].subCategory"]' ??
    • 感谢您的意见。更改单引号的位置对我有用:$("#" + formId + " select[name='" + key + "']").addClass('inputBoxError');
    • (对于双重回滚非常抱歉 - 错误地认为 其他人 对您的帖子进行了欺骗)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 2015-08-13
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多