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