Javascript获取表单数组值

时间:2013-09-25 16:18:38

标签: javascript for-loop append html-form

我有一个设置的表单,以便有一个添加按钮,以便我的用户可以一次向网站提交多个人。

首先,表单有一个输入来填写下面一个例子的人名

<input type="text" name="name[]" value="Name" /> 

如果他们点击添加按钮,则会附加另一个按钮,以便我留下以下

<input type="text" name="name[]" value="Name" /> 
<input type="text" name="name[]" value="Name" /> 

然后,当他们点击提交时,我试图在Javascript中获取每个名称的值并循环显示它们我尝试了这个但是它没有工作

var inputs = document.getElementById('formIDhere').getElementsByTagName('name');
alert(inputs.length);

我从来没有得到警报,如果我只是设置这样的循环

for(int i=0; i<inputs.length; i++)

没有任何反应,在javascript中循环遍历name []的值的任何帮助都将非常感激

8 个答案:

答案 0 :(得分:5)

我想你可以试试:

var inputs = document.querySelectorAll("#formIDHere input[name='name[]']");
alert(inputs.length);
for (i = 0; i < inputs.length; i++) {
    // your code here
}

答案 1 :(得分:2)

简单方法:

var names=document.getElementsByName('name[]');

for(key=0; key < names.length; key++)  {
    alert(names[key].value);

    //your code goes here
}

答案 2 :(得分:1)

[...document.querySelector("#FORMID").elements['name[]']].map(el=>el.value); 
// Returns ["name","name",...]

答案 3 :(得分:0)

我认为您可以使用document.getElementById('formIDhere').elements.name

它将为您提供包含所有值的数组。

答案 4 :(得分:0)

你的错误是使用getElementsByTagName,这是要求一个名为<name>的标签,当然你没有它,尝试设置一个类到输入例如并使用jquery获取它$('className')肯定会得到正确的结果,或者使用dom,你仍然可以使用 document.getElementById('form').elements.name但除非经过仔细测试,否则这种方式可能不会跨浏览器安全

答案 5 :(得分:0)

getElementsByTagName返回在参数中指定标记名称的元素数组。 在html中,没有标记名称为name的元素。

name是给予html元素的属性。 要根据名称获取元素,您可以使用

var ele=document.getElementsByName('whatevername');

ele将包含指定名称的元素数组。然后你可以使用你的循环遍历每个元素。

答案 6 :(得分:0)

这是

的表单元素
var inputs = document.getElementById('formIDhere').elements["name[]"];
alert(inputs.length);
for (i = 0; i < inputs.length; i++) {
    // your code here
}

答案 7 :(得分:0)

使用JQuery,您可以尝试:

   var arr = $('#frmId').serializeArray();

serialize方法提供了几个可以签入的选项:https://api.jquery.com/serializearray/