この問題に関して、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]
したがって、基本的にはどちらの方法でも機能しません。
角括弧をエスケープする方法について誰か助けてくれませんか。