2011-04-06 41 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