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

x4t*_*tje 62 javascript arrays jquery

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

<input type="text" id="task" name="task[]" />
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢.

Kob*_*obi 117

使用地图:

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

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

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


Sar*_*raz 32

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

<input type="text" class="task" name="task[]" />
Run Code Online (Sandbox Code Playgroud)

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

$('.task').each(function(){
   alert($(this).val());
});
Run Code Online (Sandbox Code Playgroud)


Dal*_*dal 15

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

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

<input type='text' name='task'>
Run Code Online (Sandbox Code Playgroud)

并获取任务do值的数组

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


fxs*_*fxs 9

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

$("input[name*='task']")
Run Code Online (Sandbox Code Playgroud)


rah*_*hul 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));
});
Run Code Online (Sandbox Code Playgroud)

  • @rahul:那是不行的,因为他处理多个文本框而不是一个.如果您了解PHP,请注意文本框`task []`的名称,这意味着应该有多个文本框. (2认同)
  • @rahul:如果`[]`后缀为字段的名称,你的更新将无法帮助制作php数组. (2认同)