如何用jQuery获取一个数组,同名的多个<input>

我有一个表单,用户可以添加input字段与jQuery。

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

提交表单后,我在PHP中获得一个数组。

我想用$.ajax()来处理这个问题,但我不知道如何把我的<input>变成jQuery中的一个数组。

提前致谢。

使用地图 :

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

如果你改变或删除了id(应该是唯一的),你也可以使用select器$("input[name='task\\[\\]']")

工作示例: http : //jsbin.com/ixeze3

对于多个元素,你应该给它一个类,而不是id,例如:

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

现在你可以得到那些使用jQuery的东西是这样的:

 $('.task').each(function(){ alert($(this).val()); }); 

首先,你不应该在页面上有多个具有相同ID的元素 – ID应该是唯一的。

你可以删除id属性,并用下面的代替:

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

并获得任务do的值的数组

 var taskArray = new Array(); $("input[name=task]").each(function() { taskArray.push($(this).val()); }); 

要捕获名称数组,我使用:

 $("input[name*='task']") 

文档中的多个元素不能使用相同的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)); }); 

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()); }); 

如果你想select器获得相同的ID,使用:

 $("[id=task]:eq(0)").val(); $("[id=task]:eq(1)").val(); etc... 

你可以使用jquery.serializeJSON来做到这一点。