Как получить массив из входных данных в JQUERY? - PullRequest
1 голос
/ 19 апреля 2011

У меня есть группа входов, чтобы получить информацию об игроке:

<select name="playerSport" class="playerSport">...</select>
<input type="text" name="playerPosition" class="playerPosition" />
<input type="text" name="playerNumber" class="playerNumber" />
<button id="submit">Submit</submit>

Может быть n номеров каждого поля. Я использую AJAX с этой формой, поэтому я хочу вытащить каждое поле в массив. Есть массив для каждого вида спорта, позиции и числа.

Я рассмотрел примеры с этих страниц: jquery.val () а также jquery.map ()

я пробовал:

var sport = $('input[name="playerSport"').val() || [];
var sportList = sport.join(",");

var sport = $('.playerSport').val() || [];
var sportList = sport.join(",");

$('input[name="playerSport"').map().get().join(",");

$('.playerSport').map().get().join(",");

эти возвращают пустые результаты. Скорее всего, я упускаю что-то довольно очевидное. Есть идеи?

Ответы [ 3 ]

1 голос
/ 19 апреля 2011

Другой вариант - передать функцию в .val()

var values = [];
$(":input").val(function(index, value){
    values.push(value);
});

Также вы можете использовать :input, если хотите выбрать все элементы <select/>, <input type="text"/> и <textarea/>.

Пример кода на jsfiddle

1 голос
/ 19 апреля 2011
var a = $.map($(".playerSport,.playerPosition,.playerNumber"), function(el) {
 return $(el).val();
});
// now 'a' is an array containing the values.
0 голосов
/ 19 апреля 2011

.val() вернет массив для элемента с несколькими значениями (например, multi- <select>), но не вернет массив значений от каждого элемента в выбранном наборе узлов.

Вам нужно будет создать массив в функции обратного вызова, возможно, используя $.map.

...