Как получить массив с jQuery, несколько <input> с тем же именем
У меня есть форма, в которой пользователи могут добавлять поля ввода с помощью jQuery.
<input type="text" id="task" name="task[]" />
После отправки формы я получаю массив в PHP.
Я хочу обработать это с помощью $.ajax()
, но я не знаю, как превратить мой <input>
в массив в jQuery.
Спасибо заранее.
Ответы
Ответ 1
Использование map:
var values = $("input[id='task']")
.map(function(){return $(this).val();}).get();
Если вы меняете или удаляете идентификатор (который должен быть уникальным), вы также можете использовать селектор $("input[name='task\\[\\]']")
Рабочий пример: http://jsbin.com/ixeze3
Ответ 2
Для нескольких элементов вы должны дать ему класс, а не id, например:
<input type="text" class="task" name="task[]" />
Теперь вы можете использовать те, которые используют jquery, примерно так:
$('.task').each(function(){
alert($(this).val());
});
Ответ 3
Во-первых, вы не должны иметь несколько элементов с одинаковым идентификатором на странице - идентификатор должен быть уникальным.
Вы можете просто удалить атрибут id и заменить его на:
<input type='text' name='task'>
и получить массив значений задачи do
var taskArray = new Array();
$("input[name=task]").each(function() {
taskArray.push($(this).val());
});
Ответ 4
Чтобы поймать массив имен, я использую это:
$("input[name*='task']")
Ответ 5
Вы не можете использовать один и тот же идентификатор для нескольких элементов в документе. Держите идентификаторы разными и назовите их для элементов.
<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
HTML:
<input type="text" name="task[]" class="form-control" id="task">
JS:
var tasks= new Array();
$('input[name^="task"]').each(function()
{
tasks.push($(this).val());
});
Ответ 7
если вы хотите, чтобы селектор получил один и тот же идентификатор, используйте:
$("[id=task]:eq(0)").val();
$("[id=task]:eq(1)").val();
etc...
Ответ 8
Вы можете использовать jquery.serializeJSON, чтобы сделать это.