Как получить значение из элементов массива с помощью 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);
}

Как я могу прочитать значение из этого массива? Помогите!

Ответ 1

Вы должны использовать:

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

или

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

Ответ 2

Использовать функцию карты

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

Ответ 3

jQuery коллекции имеют встроенный итератор с .each:

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

Ответ 4

Использование: 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);
}

Ответ 5

Вы можете просто прокручивать элементы:

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

Ответ 6

Ваш синтаксис неверен.

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

array [i] не является объектом jQuery (по какой-то причине).

Проверка вашей консоли браузера может быть полезна для таких вещей.

Ответ 7

для чтения array, вы также можете использовать метод each "jQuery:

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

bonus: вы также можете читать объекты с помощью этого метода.

источник