2014-02-14 83 views
4

我的问题是:如何在表单中引用输入元素的动态“名称”?获取表单对象中动态输入元素的值

例如,用下面的HTML:

<form> 
    <input type="text" name="qty1" value="input1" /> 
    <input type="text" name="qty2" value="input2" /> 
    <input type="text" name="qty3" value="input3" /> 

    <input type="submit" value="Submit" onClick="checkVal(this.form); return false;" /> 
</form> 

的Javascript:

function checkVal(form) { 
    for (var i = 1; i <= 3; i++) { 
     alert(form.qty+i.value); // Here's where my problem is.. 
    } 
} 

以上的JavaScript不起作用。警报正在输出NaN

如何在012循环中使用i变量来参考qty1,qty2qty3

这里有一个的jsfiddle:http://jsfiddle.net/MRzWf/

+0

警报(的document.getElementById( '数量' +我)。值); – user3272686

回答

0

问题是form.qty+i

要访问你应该使用index括号内数组的元素。

还有另一种方法来检查输入值。这是一个。

function checkVal(form) { 
    var allInputs = document.getElementsByTagName('input'); 
    for (var i = 0; i < 3; i++) { 
      if(allInputs[i].type == 'text'){ 
       alert(allInputs[i].value); 
      } 
    } 
} 

DEMO

+0

请看看已更新的答案 –

+0

谢谢。是的,现在可以工作。 :) – MElliott

+0

不客气。 –

0

试试这个。它适用于上述问题

function checkVal(form) { 
for (var i = 0; i < 3; i++) { 
    alert(document.getElementsByTagName("input")[i].value); 
} } 
0

标准溶液

使用:form.elements[]应该在所有的浏览器..

function checkVal(form) { 
    for (var i = 1; i <= 3; i++) { 
     alert(form.elements["qty"+i].value); 

     /* OR using dynamic name variable 
     var ename = "qty"+i; 
     alert(form.elements[ename].value); 
     */ 
    } 
}