Ответ 1
Вы должны использовать:
card_value= array.eq(i).val(); //gets jquery object at index i
или
card_value= array[i].value; //gets dom element at index i
У меня есть несколько полей ввода, например:
<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);
}
Как я могу прочитать значение из этого массива? Помогите!
Вы должны использовать:
card_value= array.eq(i).val(); //gets jquery object at index i
или
card_value= array[i].value; //gets dom element at index i
Использовать функцию карты
var values = $("input[name^='card']").map(function (idx, ele) {
return $(ele).val();
}).get();
jQuery
коллекции имеют встроенный итератор с .each
:
$("input[name^='card']").each(function () {
console.log($(this).val());
}
Использование: 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);
}
Вы можете просто прокручивать элементы:
$("input[name^='card']").each(function() {
console.log($(this).val());
});
Ваш синтаксис неверен.
card_value = $(array[i]).val();
или card_value = array[i].value;
array [i] не является объектом jQuery (по какой-то причине).
Проверка вашей консоли браузера может быть полезна для таких вещей.
для чтения array
, вы также можете использовать метод each
"jQuery
:
$.each($("input[name^='card']"), function(index, val){
console.log(index + " : " + val);
});
bonus: вы также можете читать объекты с помощью этого метода.