如何使用jQuery获取一个数组,多个<input />具有相同的名称

时间:2010-04-13 07:48:02

标签: javascript jquery arrays

我有一个表单,用户可以使用jQuery添加输入字段。

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

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

我想用$.ajax()处理这个问题,但我不知道如何在jQuery中将<input>转换为数组。

提前致谢。

9 个答案:

答案 0 :(得分:114)

使用map

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

如果您更改或删除了ID(应该是唯一的),您也可以使用选择器$("input[name='task\\[\\]']")

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

答案 1 :(得分:32)

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

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

现在你可以使用像这样的jquery:

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

答案 2 :(得分:15)

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

您可以删除id属性并将其替换为:

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

并获取任务值的数组

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

答案 3 :(得分:9)

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

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

答案 4 :(得分:6)

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

如果您希望选择器获得相同的ID,请使用:

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

答案 7 :(得分:0)

您可以使用jquery.serializeJSON执行此操作。

答案 8 :(得分:0)

问:如何访问名称数组文本字段

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

答案-使用输入名称数组:

$('input[name="task\\[\\]"]').eq(0).val()
$('input[name="task\\[\\]"]').eq(index).val()