2012-11-21 26 views
1

我試圖通過jQuery訪問以下輸入名稱,以便基於一組可能的選項更改其狀態屬性。該標記是:使用數組模式訪問輸入名稱jQuery

<input name="extra[00]" id="extra[00]" type="text" class="optional-field extra " value="" disabled="disabled"> 
<input name="extra[01]" id="extra[01]" type="text" class="optional-field extra " value="" disabled="disabled"> 
<input name="extra[02]" id="extra[02]" type="text" class="optional-field extra " value="" disabled="disabled"> 
<input name="extra[20]" id="extra[20]" type="text" class="optional-field extra " value="" disabled="disabled"> 
<input name="extra[21]" id="extra[21]" type="text" class="optional-field extra " value="" disabled="disabled"> 
<input name="extra[30]" id="extra[30]" type="text" class="optional-field extra " value="" disabled="disabled"> 

在名稱中的第一個數字=「額外[XX]」規定的一組,這就是爲什麼它可以重複,而第二組的順序。由ID = 2

var id = jQuery(this).val(); // Changes from a drop-down 
var extra = jQuery('input[name="extra[' + id + ']"]'); 

是否可以算「額外」的元素有多少是在DOM啓動,例如:我是想這一點,但不能找到一種方式來獲得第二個可能的要素(jQuery('input[name="extra[2*]"]'))?

提前感謝任何幫助。

+0

我會考慮在這裏改變你的設計。您可以使用'class'和'data'屬性的組合,然後忘記混淆的名稱和ID。 –

+0

不能,因爲這些可能會改變取決於幾個因素,從沒有,到多個,甚至ID是不同的。 html標記是從數據庫填充的,我不知道可能來自哪裏,所以我需要在呈現後執行此操作。無論如何,謝謝你的提示Cory。 – McRui

回答

2

試試這個

$('input[name^="extra\\[2"]').length 

需要躲避[\\

這會給你與name="extra[2"

^是啓動輸入單元的長度attribute starts with selector

Check Fiddle

+0

逃脫之前[似乎根本不工作... – McRui

+0

這就是那個!幫助大家。這真的很有幫助。 – McRui

+0

@Mario ..很高興有幫助:) –

1

您可以使用$("#container input[name=^extra]");選擇所有以extra開頭的元素。然後只計算該列表中的元素數量。 :)

相關問題