My question is: How do I reference a dynamic 'name' of an input element in a form?
For instance, with the following 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..
    }
}
The above javascript does not work. The alert is outputting NaN. 
How do I reference qty1, qty2, and qty3 in a for loop using i variable?
Here's a jsfiddle: http://jsfiddle.net/MRzWf/
Use Bracket notation
 form["qty" + i].value
function checkVal(form) {
    for (var i = 1; i <= 3; i++) {
        console.log("qty" + i, form["qty" + i].value);
    }
}
<form>
    <input type="text" name="qty1" value="input1" />
    <br/>
    <input type="text" name="qty2" value="input2" />
    <br/>
    <input type="text" name="qty3" value="input3" />
    <br/>
    <input type="submit" value="Submit" onClick="checkVal(this.form); return false;" />
</form>
Simply login as a dictionary
http://jsfiddle.net/MRzWf/2/
 alert(form["qty"+i].value);
                        Standard Solution
Using: form.elements[] should work in all browsers..
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);
        */
    }
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With