我有问题将所有表单数组值都获取到JS数组,其中一个值正常工作:
var el = document.getElementsByName('p[]');
for (var i = 0, j = el.length; i < j; i++) {
var elem = el[i];
alert(elem.value);
}
但是当我尝试添加更多它不起作用时:
var el = document.getElementsByName('p[]', 'k[]', 'ka[]', 's[]');
for (var i = 0, j = el.length; i < j; i++) {
var elem = el[i];
alert(elem.value);
$.post("test.php", { 'p': [elem.value] });
}
这是我的表单:表单是动态的(单击按钮我可以添加包含这4个字段的新行:
<form name="form">
<input type="text" name="p[]" id=name" />
<input type="text" name="k[]" id="quant" size="3" />
<input type="text" name="ka[]" id="price" size="10" />
<input type="text" name="s[]" id="sum" size="10" disabled="disabled"/><br />
</form>
答案 0 :(得分:3)
document.getElementsByName
并没有以您尝试使用它的方式神奇地采用多个参数。您需要多次致电gEBN
,每个名称一次(another answer更详细地说明)。
或者,只需循环遍历<form>
的输入:
var form = document.getElementsByName('form')[0];
var inputs = form.getElementsByTagName('input');
for (var i = 0, j = inputs.length; i < j; i++) {
// snip
}
答案 1 :(得分:1)
方法get elementsByName接受一个字符串参数,所以你应该这样做:
var listOfElements = ['p[]', 'k[]', 'ka[]', 's[]'];
for (var i=0; i<listOfElements.length; i++) {
var el = document.getElementsByName(listOfElements[i]);
...
}