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

IT技术 javascript jquery arrays
2021-02-23 23:06:13

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

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

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

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

提前致谢。

6个回答

使用地图

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

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

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

我们为什么需要.get()
2021-04-27 23:06:13
这适用于 1,2,3,所以我将使用它与 php 的爆炸功能进行排序,感谢@all 的帮助
2021-04-28 23:06:13
.get() 将值数组展平为字符串。如果您确实想要实际的 Javascript 值数组,则应该删除“.get()”。
2021-04-30 23:06:13
@x4tje - 没问题。您不必使用爆炸 - 请注意,这values是一个数组,而不是一个字符串。这取决于您如何进行 AJAX 调用或课程。
2021-05-07 23:06:13
@orrd -$(...)返回一个类似数组的 jQuery 包装器。$(...).get()返回真实 DOM 节点的真实数组,而不是字符串。
2021-05-11 23:06:13

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

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

现在你可以得到那些使用 jquery 的东西:

$('.task').each(function(){
   alert($(this).val());
});
@Sarfraz 请检查它codepen.io/sidaurukfreddy/pen/XNroJW如果 kode barang 具有相同的值,我如何防止?谢谢
2021-04-24 23:06:13

首先,页面上不应有多个具有相同 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']")
这实际上是这里最好的答案。
2021-05-05 23:06:13

您不能对文档中的多个元素使用相同的 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));
});
@rahul:您的更新在制作 php 数组方面仍然无济于事,如果[]以字段名称为后缀就可以完成
2021-04-16 23:06:13
@rahul:那不行,因为他要处理多个文本框而不是一个。如果您了解 PHP,请注意文本框的名称,task[]这意味着应该有多个文本框。
2021-05-05 23:06:13