2011-08-23 79 views
4

我想,這些元素是在相同的名稱,名稱=「項目[]」
例如輸入元素的值:
如何獲取與javascript數組同名的input元素的值?

<div>...<input type="text" name="items[]" value="1" /></div> 
<div>...<input type="text" name="items[]" value="2" /></div> 
<div>...<input type="text" name="items[]" value="3" /></div> 

我希望得到的結果是這樣的:

[1, 2, 3] //that store in an javascript variable. 

我需要做一個循環來訪問所有的元素來獲得它的值嗎? 請給我一個很好的解決方案,無論是JavaScript或JQuery。
感謝

+7

你知道如何接受一個答案? –

+0

接受答案?你什麼意思? –

+0

hor !!!我明白了.. hehe ..謝謝^^ –

回答

24
var values = []; 
$("input[name='items[]']").each(function() { 
    values.push($(this).val()); 
}); 
+0

hi Igor,對於不清楚的問題,我很遺憾,所有元素都在div元素中,正如我在上面解決的。 –

+0

這個選擇器將選擇輸入元素,即使它們在div內;如果你想確定 –

+0

,你可以使用'$(「div input [name ='items []']」)',但它什麼都不報警。我曾嘗試$('classname')。each(function(){values + = $(this).val()});但它也沒有顯示任何 –

1

只有JavaScript:

var values = []; 
var fields = document.getElementsByName("items[]"); 
for(var i = 0; i < fields.length; i++) { 
    values.push(fields[i].value); 
} 

警告,請參閱:getElementsByName in IE7

+0

我認爲會有IEE中的'getElementsByName'問題 –

+0

@ igor同意jQuery是要走的路,但OP要求都是 – Graham

3

或者使用jQuery的地圖功能:

$("div input[name='items[]']").map(function() { return $(this).val(); }).get(); 
+0

要小心.map(),在某些瀏覽器中它返回一個數組,但在其他瀏覽器中返回一個對象'm.fn.init []'(Chrome) 。後者不能通過JSON.stringify()進行字符串化。具體來說,以下兩個不等價:var arr = $('input [name =「foo」]')。map(function(){return this.value})。get()'var'arr = [ ]。 $( '輸入[名稱= 「foo」 的]')。每個(函數(){arr.push(THIS.VALUE)})'。在第一種情況下'arr'不是一個Array,而在後一種情況下。 'JSON.stringify(arr)'對於前者失敗,但對後者有效。 – Normadize

相關問題