请考虑以下代码:
$('[name='+temp[i][0]+']').prev().addClass('form_error');
其中temp [i] [0]是一个数组项,其中包含一个包含方括号的表单字段的名称(因为它表示一个复选框数组),name_of_field[]
。
为了实现这一点,我知道我应该从表单字段的名称中删除方括号。但是,由于我是正则表达式的新手,我似乎无法做到正确。任何人都可以提供正确的代码吗?非常感谢。
答案 0 :(得分:3)
只需引用该值,然后转义引号:
var name = temp[i][0];
name = name.split('"').join('\\"'); // Escaped " is \\"
$('[name="'+name+'"]').prev().addClass('form_error');
这也会考虑其他有效名称,但选择字符无效,例如$
。
如果您真的想使用RegEx,以下就足够了(故意使用单行显示短代码并不总是可读):
$('[name="' + temp[i][0].replace(/"/g, '\\"') + '"]').prev().addClass('form_error');
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
答案 1 :(得分:0)
我想我可能会澄清一下,因为我无疑会再次回到这个问题。
上述'正则表达式可以最好地解决上述问题。但是,如果您只是尝试访问下面的静态命名元素,那么这是您的简单指南:
<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>