2012-08-30 18 views
10

Öyle gibi birden fazla giriş alanları vardır:Nasıl jQuery kullanarak dizideki elemanların değerini almak için?

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

Kullanıcılar ekleyebilir veya gerektiği gibi bu alanları kaldırabilir bu nedenle alanların adı bir dizidir. dizinin uzunluğunu elde etmek için, bu iyi çalışır:

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

nasıl diziden değerini okuyabilir?

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); 
} 

Bu da işe yaramadı:

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

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

Nasıl bu diziden değerini okuyabilir

ben işe yaramadı hangi denedim? Yardım!

+0

biraz ne değer okumak istediğiniz lütfen mükellef, kullanıcı aslında içinde girişler değeri 'input'? Ve hepsini ne almak istiyorsun? –

+0

deneyin $ (input.attr ("[adı^= 'kart'])").uzunluğu; – Wearybands

cevap

11

Sen kullanmalıdır:

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

veya

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

benim için çalışmıyor –

+0

@scrappedcola Nasıl aynı değeri nasıl önleyebilirim? –

+0

@FreddySidauruk "aynı değeri önlemeyi" ne demek istiyorsun? Bu, benim cevapladığım soruyla ilgili değil. Genelde, dizideki değere karşılık gelen değeri kontrol etmek için bir blok kullanılır. Eğer bir sorunuz varsa siteyi ilgili sorular için arayınız ve eğer bulamıyorsanız kendi sorunuzu yaratın. – scrappedcola

0

Kullanım: 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 koleksiyonları bir yineleyici wi inşa etmişlerdir .each inci:

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

Sadece döngü öğeleri olsa can.

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

dizisi [i] (nedense) jQuery nesne değildir.

tarayıcınızın konsolu işaretlemek, bu gibi şeyler için yararlı olabilir.

0

Kişisel sözdizimi yanlıştır:

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

Kullanım haritası işlevi

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

İpucu: Ayrıca işlev içinde '$ (this)' kullanabilir ve idx ve ele parametrelerini kullanabilirsiniz. Ve ['.get()'] (http://api.jquery.com/get/#get2), ['.map()'] tarafından döndürülen jQuery nesnesinden gerçek bir dizi ayıklamak içindir (http: //api.jquery.com/map/). – robsch

+0

@Robsch 'in yorumu için teşekkürler, .get gerçekten önemli, .map döndürülen sonuç bir javascript dizisi değil. – Five

0

bir array okumak, ayrıca yararlanabilirler jQuery ait "each" yöntemi:

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

ikramiye: Ayrıca bu yöntemle nesneleri okuyabilir.

source

İlgili konular