请考虑以下代码:
$('[name='+temp[i][0]+']').prev().addClass('form_error');
其中 temp[i][0] 是一个数组项,其中包含一个包含方括号的表单字段的名称(因为它代表一个复选框数组) name_of_field[]
,.
为了使它工作,我知道我应该转义表单字段名称中的方括号。但是,由于我是正则表达式的新手,我似乎无法正确理解它。谁能给我正确的代码?非常感谢。
请考虑以下代码:
$('[name='+temp[i][0]+']').prev().addClass('form_error');
其中 temp[i][0] 是一个数组项,其中包含一个包含方括号的表单字段的名称(因为它代表一个复选框数组) name_of_field[]
,.
为了使它工作,我知道我应该转义表单字段名称中的方括号。但是,由于我是正则表达式的新手,我似乎无法正确理解它。谁能给我正确的代码?非常感谢。
只需引用该值,然后转义引用:
var name = temp[i][0];
name = name.split('"').join('\\"'); // Escaped " is \\"
$('[name="'+name+'"]').prev().addClass('form_error');
这也解释了其他有效名称,但无效的选择器字符,例如$
.
如果您真的想使用正则表达式,那么以下内容就足够了(故意使用单行代码来表明短代码并不总是可读的):
$('[name="' + temp[i][0].replace(/"/g, '\\"') + '"]').prev().addClass('form_error');
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I thought I might clarify this, as I will no doubt be going back to this issue again.
The above problem may be best solved with the above 'regular expression' replacement, however, if you are just trying to access a statically named element(s) like below, then here is your simple guide:
<input type="text" name="mytextelement[]" />
<input type="text" name="mytextelement[]" />
<script>
//using vanilla javascript
document.querySelector('[name="mytextelement\[\]"]'); //gets the first element only
document.querySelectorAll('[name="mytextelement\[\]"]'); //gets an array of above elements
//using jQuery
$('[name="mytextelement\[\]"]'); //gets all elements
<script>