2011-04-06 43 views
1

获得输入元素集合了一种形式,看起来像这样:我如何通过name属性

<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的,以这样的上述工作。

有什么想法?

回答

5

功能:$$

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

语法:

var myElements = $$(argument);

参数:

  • 选择器 - (字符串)CSS选择
  • 元素 - (元素),(集合)或(阵列)元素列表列表
  • ele精神疾病,元件 - (元件)的任何数量的元素作为参数

返回:

  • (元素) - 相匹配的所有DOM元素,扩展了文件的阵列状的元素集合: ID。

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

CSS3支持字符转义,所以你可以用反斜杠转义字符:

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

+0

这$$'(“输入[名称= post_photo_edit \ [\]]”)'将是完美的,但它不起作用 – 2011-04-06 10:59:30

+0

我试过在谷歌浏览器jsfiddle,这是很好的。 http://jsfiddle.net/WSkQs/ – 2011-04-06 11:01:40

+0

你是对的,它的工作,但...我使用一些旧的MooTools版本,1.1下jsfiddle它也不工作,在1.25下它返回0和1.3以下它的工作原理应该如此。谢谢! – 2011-04-06 11:35:07

1

不确定MooTools,但要选择每个具有属性开始东西的元素,你这样做:

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

您可以点击这里查看:jQuery starts With Selector

+0

谢谢你的提示,它实际上是$$('input [name^=“post_photo_edit”]')。 MooTools正在使用[W3C CSS3选择器](http://www.w3.org/TR/css3-selectors/#selectors)。 – 2011-04-06 10:55:16

+0

感谢您的输入:)修复 – MeLight 2011-04-06 10:58:28

+0

在IE下,至少有8个,只有这个工程:'[name〜='post_photo_edit']' – 2011-04-08 20:21:25