2012-08-30 66 views
10

我有多個輸入字段像這樣:如何使用jQuery從數組中的元素中檢索值?

<input type="text" name="card[]"> 
<input type="text" name="card[]"> 
<input type="text" name="card[]"> 

用戶可以根據需要添加或刪除這些領域中,因此,字段的名稱是一個數組。 要得到數組的長度,這工作得很好:

var n = $("input[name^= 'card']").length; 

如何從陣列讀取值?

我已經試過這沒有工作:

var n = $("input[name^='card']").length; 
var array = $("input[name^='card']"); 
for(i=0;i<n;i++) 
{ 
card_value= array[i].val(); 
alert(card_value); 
} 

這並沒有工作,要麼:

var n = $("input[name^='card']").length; 

for(i=0;i<n;i++) 
{ 
card_value= $("input[name^='card["+i+"]']").val(); 
alert(card_value); 
} 

如何從這個數組讀值? 幫助!

+0

精心一點,請,你想讀什麼樣的價值,用戶實際上內輸入值'input'?你想要檢索什麼,所有這些? –

+0

嘗試$(input.attr(「[name^='card'])」)。長度; – Wearybands

回答

11

你應該使用:

card_value= array.eq(i).val(); //gets jquery object at index i 

card_value= array[i].value; //gets dom element at index i 
+0

不適合我 –

+0

@scrappedcola我該如何防止相同的價值? –

+0

@FreddySidauruk你是什麼意思「防止相同的價值」?這與我正在回答的問題無關。通常會使用if塊來檢查數值與數組中的值。如果您有任何疑問,請在網站上搜索相關問題,如果您沒有找到自己的問題。 – scrappedcola

0

用途:http://jsfiddle.net/xH79d/

var n = $("input[name^='card']").length; 
var array = $("input[name^='card']"); 

for(i=0; i < n; i++) { 

    // use .eq() within a jQuery object to navigate it by Index 

    card_value = array.eq(i).attr('name'); // I'm assuming you wanted -name- 
    // otherwise it'd be .eq(i).val(); (if you wanted the text value) 
    alert(card_value); 
} 

6

jQuery收藏有內建的迭代器無線日.each

$("input[name^='card']").each(function() { 
    console.log($(this).val()); 
} 
0

你可以循環雖然項目:

$("input[name^='card']").each(function() { 
    console.log($(this).val()); 
}); 
0

你的語法不正確。

card_value = $(array[i]).val();card_value = array[i].value;

陣列[i]是不是一個jQuery對象(由於某種原因)。

檢查您的瀏覽器的控制檯可以幫助這樣的事情。

11

使用地圖功能

var values = $("input[name^='card']").map(function (idx, ele) { 
    return $(ele).val(); 
}).get(); 
+1

提示:您還可以在函數中使用'$(this)'並放置參數idx和ele。 ['.get()'](http://api.jquery.com/get/#get2)用於從['.map()']返回的jQuery對象中提取真實數組(http: //api.jquery.com/map/)。 – robsch

+0

感謝@Robsch的評論,.get的確很重要,.map返回的結果不是一個javascript數組。 – Five

0

讀取一個array,你還可以利用 「each」 的jQuery方法:

$.each($("input[name^='card']"), function(index, val){ 
    console.log(index + " : " + val); 
}); 

獎金:你也可以通過閱讀該方法的對象。

source

相關問題