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

时间:2011-04-06 10:29:59

标签: javascript jquery forms 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>

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

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

我试过打电话

$$("input[name='post_photo_edit[]']")

但它给了我一个例外。并且这样称呼它:

$$("input[name='post_photo_edit']")

返回空集合。

我知道我可以这样称呼

document.getElementsByName("post_photo_edit[]")

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

任何想法?

3 个答案:

答案 0 :(得分:5)

功能:$$

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

<强>语法:

var myElements = $$(argument);

<强>参数:

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

<强>返回:

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

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

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

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

答案 1 :(得分:1)

不确定MooTools,但是为了选择具有BEGINS属性的每个元素,你可以这样做:

$('input[name^="post_photo_edit"]')

您可以在此处查看:jQuery starts With Selector

答案 2 :(得分:1)

你应该使用attribute starts with selector。在MooTools上也是如此