Как получить Массив с jQuery, несколько <вход> с тем же именем

У меня есть форма, где пользователи могут добавить поля ввода с jQuery.

<input type="text" id="task" name="task[]" />

После представления формы я получаю массив в PHP.

Я хочу обработать это с $.ajax() но я понятия не имею, как повернуть мой <input>s к массиву в jQuery.

Заранее спасибо.

62
задан x4tje 26 September 2011 в 21:52
поделиться

4 ответа

Использование map :

var values = $("input[id='task']")
              .map(function(){return $(this).val();}).get();

Если вы измените или удалите идентификатор (который должен быть уникальным), вы также можете использовать селектор $ ("input [name = 'task \\ [ \\] '] ")

Рабочий пример: http://jsbin.com/ixeze3

117
ответ дан 24 November 2019 в 16:35
поделиться

Во-первых, у вас не должно быть нескольких элементов с одним и тем же идентификатором на странице - идентификатор должен быть уникальным.

Вы можете просто удалить атрибут id и заменить его на:

<input type='text' name='task'>

и получить массив значений задачи do

var taskArray = new Array();
$("input[name=task]").each(function() {
   taskArray.push($(this).val());
});
15
ответ дан 24 November 2019 в 16:35
поделиться

Для нескольких элементов, вы должны дать им класс, а не id, например:

<input type="text" class="task" name="task[]" />

Теперь вы можете получить их с помощью jquery примерно так:

$('.task').each(function(){
   alert($(this).val());
});
32
ответ дан 24 November 2019 в 16:35
поделиться

Вы не можете использовать один и тот же id для нескольких элементов в документе. Сохраняйте разные идентификаторы и одинаковые имена для элементов.

<input type="text" id="task1" name="task" />
<input type="text" id="task2" name="task" />
<input type="text" id="task3" name="task" />
<input type="text" id="task4" name="task" />
<input type="text" id="task5" name="task" />

var newArray = new Array();

$("input:text[name=task]").each(function(){
    newArray.push($(this));
});
6
ответ дан 24 November 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: