我有一个表单,用户可以使用jQuery添加输入字段。
<input type="text" id="task" name="task[]" />
提交表单后,我在PHP中获得了一个数组。
我想用$.ajax()
处理这个问题,但我不知道如何在jQuery中将<input>
转换为数组。
提前致谢。
答案 0 :(得分:114)
使用map:
var values = $("input[id='task']")
.map(function(){return $(this).val();}).get();
如果您更改或删除了ID(应该是唯一的),您也可以使用选择器$("input[name='task\\[\\]']")
答案 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()