![](/img/trans.png)
[英]jQuery selector for inputs with square brackets in the name attribute
[英]Escaping square brackets in element's name when using the Attribute Equals Selector
请考虑以下代码:
$('[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');
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我想我可能会澄清这一点,因为毫无疑问我会再次回到这个问题上。
上面的问题可能最好用上面的“正则表达式”替换来解决,但是,如果您只是想访问一个静态命名的元素,如下所示,那么这里是您的简单指南:
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.