Eingaben von mehreren (!) Formularen prüfen
sloomf
- javascript
Hallo Forum,
Ich arbeite an einer Seite bei der Stück für Stück mehrere Positionen eingegeben und bearbeitet werden können.
Die hat dann grob die Form:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
name="Form_rv_pos"
method="post"
enctype="multipart/form-data"
onSubmit="return ckformular_rv_pos()"
>
[...]
</form>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
name="Form_rv_pos"
method="post"
enctype="multipart/form-data"
onSubmit="return ckformular_rv_pos()"
>
[...]
</form>
Über versteckte input Felder wird ein index mitgegeben, von daher ist die Verarbeitung kein Problem.
Ich möchte nun mit JavaScript die Eingaben der Formulare prüfen (kformular_rv_pos()).
Dies funktioniert einwandfrei wenn nur ein Formular existiert, sobald eine zweite Position hinzukommt funktioniert es scheinbar nicht mehr.
Ich vermute dass es daran liegen könnte dass alle Formulare den gleichen Namen haben, dieser steht auch in der Prüfungsfunktion:
function ckformular_rv_pos()
{ bErrorFound = false;
if (document.Form_rv_pos.Bestellnummer.value == "")
{ bErrorFound = true;
document.Form_rv_pos.Bestellnummer.style.background = "#FFAAAA";
alert ("Bitte geben Sie eine Bestellnummer ein.\n\n");
document.Form_rv_pos.Bestellnummer.style.background = "#FFFFFF";
}
if (bErrorFound == true)
{ return false;
}
}
Mir ist nicht ganz klar wo ich hier nen Fehler hab, bzw. wenn eine Prüfung aus JavaScript nur bei eindeutigen Formularnamen klappt, wie ich diese dynamischen Formularnamen der Prüffunktion verständlich machen.
Freue mich auf eure Tipps.
Gruß
Stephan
Hallo,
onSubmit="return ckformular_rv_pos()"
Was meinst du, könnte man mit den Klammern () machen?
Gruß, Boomer
<body onsubmit="return validate()">
<form name="Adresse">
<!-- formulare -->
</form>
<form name="Data">
<!-- formulare -->
</form>
</body>
function validate() {
formAdresse = document.forms[0]; // alternativ mir Namen des Form-Tags document.Adresse;
formData = document.forms[1]; // document.Data;
if(formAdresse.Vorname.value == "") {
alert("Vorname ist leer");
return false;
}
// usw.
return true;
}
Mit einer Funktion alles Prüfen, musst halt die Form-Tags ansprechen (bei mehr als einem Form).
Ich möchte nun mit JavaScript die Eingaben der Formulare prüfen (kformular_rv_pos()).
Dies funktioniert einwandfrei wenn nur ein Formular existiert, sobald eine zweite Position hinzukommt funktioniert es scheinbar nicht mehr.Ich vermute dass es daran liegen könnte dass alle Formulare den gleichen Namen haben, dieser steht auch in der Prüfungsfunktion:
Viel einfacher ist die Sache, wenn du beim aufruf der Prüffunktion die Referenz auf das Formular mitgibst.
function ckformular_rv_pos()
{ bErrorFound = false;
Globale Variabeln sind schlecht und in diesem Fall nicht nötig.
Die Lösung für dein Problem sieht in etwa so aus:
<form action="...." onsubmit="return ckformular_rv_pos(this);">
function ckformular_rv_pos(form)
{ var bErrorFound = false;
if (!form.Bestellnummer.value)
{ bErrorFound = true;
form.Bestellnummer.style.background = "#FFAAAA";
alert ("Bitte geben Sie eine Bestellnummer ein.\n\n");
form.Bestellnummer.style.background = "#FFFFFF";
}
return !bErrorFound;
}
Struppi.
Hallo Struppi,
Danke für den Hinweis.
Manchmal sieht man den Wald vor Bäumen nicht mehr :-)
Gruß
Stephan