hallo herr Kruse(Tomcat),
ich hoffe, dass Du nur durch einen
langen arbeitstag mit doofen VB-scripting
in Deinen gedankengaengen steckengeblieben
bist - ich sehe zwei loesungsansaetze:
(a) uebergabe von <% i %> an eine JS-variable
mit ueberarbeitung der gesamten JS-funktion,
weil es so wie es bei Dir geschrieben steht
auch nicht funktionieren kann;
(b) VBscript unabhaengige loesung nur ueber
JS mit abfrage von documents.forms[].element[].length
(abzueglich der beiden knoepfe [submit] bzw [reset] oder
was da noch alles so by default als element im formular
stehen sollte);
deine quellcode:
----------------
»».
»»<input type="text" name="Menge_<%=i%>" size="3">
»».
»»Bei 12 Eintraegen habe ich also:
»»
»»...<input type="text" name="Menge_1" size="3">
»»...<input type="text" name="Menge_2" size="3">
»».
»».
»».
»»...<input type="text" name="Menge_11" size="3">
»»...<input type="text" name="Menge_12" size="3">
»» <script language="JavaScript">
<!--
function chkFormular()
{
if(document.Bestellung.Menge_<%=i%>.value = "0")
{
alert("Sie haben noch nichts bestellt !");
document.Bestellung.Menge_<%=i%>.focus();
return false;
}
}
meine vorschlaege:
------------------
.
.
<input type="text" name="Menge_<%response.write(i)%>" size="3" value="">
.
(a) <script language="JavaScript">
<!--
var menge = <%response.write(i)%>;
function chkFormular()
{for (k=1;k<=menge;k++)
{if (self.document.forms["Bestellung"].elements[eval("Menge_"+k)].value == "")
{//bitte auf den alert verzichten, dass nervt
//tatsaechlich genuegt das dezente setzen des focus
self.document.forms["Bestellung"].elements[eval("Menge_"+k)].focus();
return false;
break;
}
return true;
}
//-->
</script>
(b) <script language="JavaScript">
<!--
var menge = 0;
function getMenge()
{menge = self.document.Bestellung.elements.length;
menge = menge - [die anzahl von elementen, die sich by
default noch im selben formular befinden];
}
function chkFormular()
{for (k=1;k<=menge;k++)
{if (self.document.Bestellung.elements[k-1].value == "")
{//bitte auf den alert verzichten, dass nervt
//tatsaechlich genuegt das dezente setzen des focus
self.document.Bestellung.elements[k-1)].focus();
return false;
break;
}
return true;
}
//-->
</script>
</head>
<body .. onload="getMenge()">
...
anmerkung: das "[k-1]" in bsp (b) muss Du natuerlich
anpassen, wenn Dein erstes element im formular
kein zu pruefendes texteingabefeld ist;
so sollte es funktionieren, auch wenn ich das script jetzt
nicht noch durchlaufen lasse, um seine syntax zu pruefen -
falls sich also kommasemikolonwasweisichfuerfehler einge-
schlichen haben musst Du selbst hand anlegen und debuggen;
ich verbleibe mit freundlichen gruessen - peter seliger
pseliger@gmx.net