Formularabfrage mit Schleife und value == "" value == " "
André Laugks
- javascript
Hallo alle zusammen!
Irgendwie habe ich mir heute in den Kopf gestezt, Schleifen mal zu erstellen. Und denke mir auch gleich ein Beispiel aus. Es sollen 4 Eingabefelder getestet werden.
Script und Beschreibung:
Die JavaScript-"Könner", werden sicherlich die Funktionsweise erkennen.
Es soll bis zu elements[4] hoch gezählt werden, dabei immer getestet werden, ob im Eingabefeld etwas eingetragen ist. Ist ein Feld nicht ausgefüllt, wird die Schleife abgebrochen.
Was funktioniert jetzt nicht!
-nur wenn ich bei value == " " ein Leerzeichen habe, wird überhaupt eine Abfrage gestartet, wenn alle Felder ausgefüllt sind passiert auch nichts, also das Formular wird nicht abgeschickt
-lasse ich kein Leerzeichen bei value, wird das Forumlar sofort auf die Reise geschickt, ohne das sich ein alert-Fenster blicken läßt
-die Variable x in alert(), wird nicht hochgezählt, es wird immer 1 angezeigt
zu value schonmal eine Frage von mir: http://www.teamone.de/selfhtml/sfarchiv/1999_3/t06086.htm
Wenn ich, wie dort empfohlen ( != ) verwende, wird das Formular schon nach dem ersten Feld auf die Reise geschickt.
<script language="JavaScript">
<!--
function felder() {
for (var i = 0; i <= 3; i++)
{
if (document.schleife.elements[i].value == "") break;
x = i + 1;
alert("Bitte das Feld " + x + " ausfuellen"); document.schleife.elements[i].focus(); return false;
}
}
//-->
</script>
<form name="schleife" action="http://cgi.netcologne.de/cgi-bin/formmail.d" method="POST" onsubmit="return felder()">
1.<br>
<input type="Text" name="eins"><br>
2.<br>
<input type="Text" name="zwei"><br>
3.<br>
<input type="Text" name="drei"><br>
4.<br>
<input type="Text" name="vier"><br>
<input type="Reset" value="Löschen">
<input type="Submit" value="Abschicken">
</form>
Ich habe mal drei Beispiele hochgeladen:
Schleife- value == "" http://www.netcologne.de/~nc-laugksan/forum/sch_ohne.htm
Schleife- value == " " http://www.netcologne.de/~nc-laugksan/forum/sch_mit.htm
Hier nochmal ein Formular ohne Leerzweichen bei value:
ohne Schleife- value == "" http://www.netcologne.de/~nc-laugksan/forum/form1.htm
ich denke, irgendwo sitzt eine fetter Fehler! :-)
Mit freundlichen Grüßen
André Laugks
Hallo,
probiers mal mit folgendem Code:
if (document.schleife.elements[i].value == "")
{
x = i + 1;
alert("Bitte das Feld " + x + " ausfuellen"); document.schleife.elements[i].focus();
return false;
}
Das hat ganz einfach den Hintergrund, daß JavaScript (genau wie C) nur eine Anweisung hinter Deiner Abfrage ausführt. Wenn mehrere Anweisungen ausgeführt werden sollen, müssen diese in geschweifte Klammern.
D.H. Deine Skripten (Links) haben jeweils nur die Anweisung break; ausgeführt. Damit brichst Du aber den Schleifendurchlauf ab, aber die nachfolgenden Anweisungen werden nicht ausgeführt. Daher fehlt das break jetzt uach.
Tschau, Stefan