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

1

特殊文字は でエスケープする必要があります\。どちらもエスケープする必要があるため、ケースに対処する例を次に示します: http://jsfiddle.net/tb2cW/1/

エスケープが必要な文字のリストは次のとおりです~!@$%^&*()_+-=,./\';:"?><[]{}|

于 2013-05-31T15:12:34.180 に答える