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