如何通过name属性获取输入元素的集合

Pio*_*iak 2 javascript forms jquery mootools css-selectors

我有一个看起来像这样的表格:

<form method="post" enctype="multipart/form-data" onsubmit="return new_post_form_submit();">    
<input type="hidden" name="task" value="addPost">   
<input type="hidden" name="post_photo_edit[]" value="0">    
<input type="hidden" name="post_photo_edit[]" value="0">
<input type="hidden" name="post_photo_edit[]" value="0">
 ... 
</form>
Run Code Online (Sandbox Code Playgroud)

new_post_form_submit函数内部,我想选择所有名为post_photo_edit集合的元素.正如您可以看到它的名称实际上是post_photo_edit[]因为我想将它作为我的PHP代码中的数组.

我正在使用MooTools,但jQuery可能会有完全相同的解决方案.

我试着打电话

$$("input[name='post_photo_edit[]']")
Run Code Online (Sandbox Code Playgroud)

但它给了我一个例外.并以这种方式调用它:

$$("input[name='post_photo_edit']")
Run Code Online (Sandbox Code Playgroud)

返回空集合.

我知道我可以这样称呼它

document.getElementsByName("post_photo_edit[]")
Run Code Online (Sandbox Code Playgroud)

它会工作得很完美,但我想知道这个表达式在MooTools中应该如何像上面那样工作.

有任何想法吗?

Ger*_*ári 6

功能:$$

选择和扩展DOM元素.返回一个Elements实例.返回的Element实例是一个类似于数组的对象,支持每个Array方法和每个Element方法.

句法:

var myElements = $$(argument);

参数:

  • selector - (字符串)CSS选择器
  • elements - (elements),(collection)或(array)可枚举的元素列表
  • element,element - (element)任意数量的元素作为参数

返回:

  • (elements) - 匹配的所有DOM元素的类似数组的Elements集合,使用document:id扩展.

所以你应该使用: $$(document.getElementsByName("post_photo_edit[]"));

CSS3支持字符转义,因此您可以使用反斜杠来转义字符:

但你也可以像这样转义数组运算符: $$("input[name=post_photo_edit\[\]]")