View Full Version : Loop form elements
charon
04-22-2003, 08:12 AM
hi, just want to know how do i loop the form elements at java script function which as below:
<input type="text" name="Lot1">
<input type="text" name="Lot2">
<input type="text" name="Lot3">
<input type="text" name="Lot4">
Roelf
04-22-2003, 10:19 AM
<html>
<head>
<title>Loop through form elements</title>
<script>
function checkelements (objForm) {
var l = objForm.elements.length;
for (var i = 0; i < l; i++ ) {
alert (objForm.elements[i].name);
// or do anything you want with them
}
}
</script>
</head>
<body>
<form name="myform">
<input type="text" name="name1">
<input type="text" name="name2">
<input type="text" name="name3">
<input type="text" name="name4">
<input type="text" name="name5">
<input type="button" onclick="checkelements(this.form)">
</form>
</body>
</html>
tamago
04-22-2003, 12:29 PM
If you only want to affect those four elements, you'd as well use getElementById():for(i = 1; i < 5; i ++){
document.getElementById('Lot' + i).value = 'I\'ve been changed!'
}:o)
charon
04-23-2003, 04:33 AM
hi,
It seems like can't work. means that it can't recognise the Lot1 element
function saveRecord(thisForm)
{
with(thisForm)
{
var formLen = selectNo.value
for(i=1; i<formLen; i++)
{
if(elements[i].name=="Lot" + i)
{ alert(elements[i].name);
}
}
}
can help??
Back again,
I really wonder if i use this ->
nameEl = "Lot1"
if(elements[i].name==nameEl)
it can be treat as form element
But, it fails when i tried to use these:
nameEl = "Lot1" + i
if(elements[i].name==nameEl)
myString1 = new String("Lot")
var nameEl = myString1.concat(i)
if(elements[i].name==nameEl)
tamago, I try use your way, but also canoot..
Please advice.
Roelf
04-23-2003, 06:32 AM
thats because the alements array starts numbering at 0, you start numbering at 1.
the first element in the form (you named it Lot1) has index 0 in the array so the condition:
elements[i].name=="Lot" + i
will never be true in this situation
charon
04-23-2003, 09:07 AM
oh ya.....my god, thank you
charon
04-24-2003, 03:30 AM
I really wonder the functions work fine yesterday, but suddenly can't. Below is the code:
function saveRecord(thisForm)
{
with(thisForm)
{
var formLen = selectNo.value
var eleLen = thisForm.length
for(var i=1; i<formLen; i++)
{
for(var j=0; j<eleLen; j++)
{
// alert(elements[j].name)
if(elements[j].name=="Lot" + i)
{
if (emptyField(elements[j].name, "Please fill in lot number: " + elements[j].name)==false)
{
return false;
//alert(elements[j].name)
}
}
}
}
}
}
function emptyField(thisfield, alertmsg)
{
var fieldStr
var fieldEmp
var reg = /\s/g;
fieldStr = thisfield.value
fieldEmp = fieldStr.replace(reg, "")
if ((thisfield.value == "") || (fieldEmp == ""))
{
alert(alertmsg);
thisfield.focus();
return (false);
}
}
my error message is:
Underfined is null or not an object
charon
04-24-2003, 03:36 AM
I know already, because of the
with(thisForm) ,
if using :
if (emptyField(thisForm.elements[j].name, "Please fill in lot number: " + elements[j].name)==false)
then no problem. But for some others part like :
if(thisForm.elements[j].name=="Lot" + i)
alert(thisForm.elements[j].name)
it works fine, just want to know WHY??????
glenngv
04-24-2003, 03:42 AM
the argument thisfield in the function emptyField() expects a reference to the field, not its name.
if (emptyField(elements[j],...)...
charon
04-24-2003, 04:25 AM
oh ya, thanks....i really dreaming lah.....
vBulletin® v3.8.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.