我有一个设置的表单,以便有一个添加按钮,以便我的用户可以一次向网站提交多个人。
首先,表格有一个输入,以填写下面一个例子的人名
<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 []的值将非常感激
我想你可以试试:
var inputs = document.querySelectorAll("#formIDHere input[name='name[]']");
alert(inputs.length);
for (i = 0; i < inputs.length; i++) {
// your code here
}
简单方法:
var names=document.getElementsByName('name[]');
for(key=0; key < names.length; key++) {
alert(names[key].value);
//your code goes here
}
[...document.querySelector("#FORMID").elements['name[]']].map(el=>el.value);
// Returns ["name","name",...]
我想你可以使用document.getElementById('formIDhere').elements.name
。
它将为您提供包含所有值的数组。
你的错误是使用getElementsByTagName
,它要求一个名为<name>
的标签,当然你没有它,尝试设置一个类到输入例如并使用jquery $('className')
获取它肯定会得到正确的结果,或者使用dom你仍然可以使用document.getElementById('form').elements.name
但仍然这种方式可能不是跨浏览器安全,除非仔细测试
getElementsByTagName
返回在参数中指定标记名称的元素数组。在html中没有标签名称为name
的元素。
name
是给予html元素的属性。要根据名称获取元素,您可以使用
var ele=document.getElementsByName('whatevername');
ele
将包含指定名称的元素数组。然后,您可以使用循环遍历每个元素。
这就是形式元素的用途
var inputs = document.getElementById('formIDhere').elements["name[]"];
alert(inputs.length);
for (i = 0; i < inputs.length; i++) {
// your code here
}