Как получить массив с jQuery, несколько с тем же именем



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



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


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



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



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

513   8  

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[name*='task']")

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

<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

    Ничего не найдено.