Formular wird trotz return false abgeschickt
Michael
- javascript
Hallo,
wahrscheinlich ein ganz banaler Fehler, ich bin aber schon betriebsblind und sehe es einfach nicht mehr.
Situation: einfaches Reservierungsformular in HTML, das serverseitig mit einem Perl Script ausgewertet wird. Dazwischen wird mit einem Javascript überprüft, ob die eingegebenen Daten valide sind.
Funktioniert eigentlich wunderbar. Wenn die Angaben stimmen, werden die Daten wie gewünscht an das CGI geschickt. Wenn die Daten nicht stimmen, bekommt der Benutzer korrekt die Fehlermeldung, aber nach dem Klick auf OK gehen die Daten trotzdem an das CGI.
Wer kann helfen?
*************
Hier die relevanten HTML-Teile:
<form name="reservierungsformular" method="post" action="reservierungsanfrage.cgi" onSubmit="pruefung();">
<input type="submit" name="Abschicken" value="Abschicken">
*************
Hier das JAVASCRIPT:
function pruefung() {
var fehler = 'Ihre Angaben sind unvollständig. Bitte geben Sie\n\n';
if(document.reservierungsformular.anrede[0].selected == true)
fehler += ('- eine Anrede an.\n');
if(document.reservierungsformular.nachname.value == '')
fehler += ('- Ihren Nachnamen an.\n');
if(document.reservierungsformular.kontakt[0].selected == true)
{
if(document.reservierungsformular.email.value.indexOf('@') == -1)
fehler += ('- eine gültige Emailadresse ein.\n');
};
if(document.reservierungsformular.kontakt[1].selected == true)
{
if(document.reservierungsformular.telefon.value =='')
fehler += ('- Ihre Telefonnummer an.\n');
};
if(document.reservierungsformular.kontakt[2].selected == true)
{
if(document.reservierungsformular.fax.value =='')
fehler += ('- Ihre Faxnummer an.\n');
};
if(document.reservierungsformular.kontakt[3].selected == true)
{
if(document.reservierungsformular.strasse.value =='' || reservierungsformular.plz.value =="" || reservierungsformular.ort.value =="")
fehler += ('- Ihre vollständige Anschrift an.\n');
};
if(fehler == 'Ihre Angaben sind unvollständig. Bitte geben Sie\n\n')
reservierungsformular.submit();
else
{
alert(fehler);
document.reservierungsformular.nachname.focus();
return false;
};
}
**************
Noch eine weitere Info: Das ganze lief jahrelang prima. Allerdings hieß da die HTML Zeile für den Abschicken-Button noch: <input type="BUTTON" name="Abschicken" value="Abschicken">. Also type=button anstelle von type=submit. Nun bin ich drauf gekommen, dass das nur im IE funktioniert, nicht aber im FF.
Nun nach der Umstellung auf type=submit bin ich nun am grübeln, warum die Daten immer übergeben werden.
Danke,
Michael
Hier die relevanten HTML-Teile:
<form name="reservierungsformular" method="post" action="reservierungsanfrage.cgi" onSubmit="pruefung();">
hier wird kein Wert zurückgegegeben.
Nun nach der Umstellung auf type=submit bin ich nun am grübeln, warum die Daten immer übergeben werden.
Damit hat es nichts zu tun.
Struppi.
Hi !
<form name="reservierungsformular" method="post" action="reservierungsanfrage.cgi" onSubmit="pruefung();">
<form name="reservierungsformular" method="post" action="reservierungsanfrage.cgi" onSubmit="return pruefung();">
FALSCH: onSubmit="pruefung();"
RICHTIG: onSubmit="return pruefung();"
Gruß
Hans
Mensch Hans!! You made my day!
Vielen lieben Dank.
Grüße,
Michael
Hi !
<form name="reservierungsformular" method="post" action="reservierungsanfrage.cgi" onSubmit="pruefung();">
<form name="reservierungsformular" method="post" action="reservierungsanfrage.cgi" onSubmit="return pruefung();">
FALSCH: onSubmit="pruefung();"
RICHTIG: onSubmit="return pruefung();"Gruß
Hans
if(fehler == 'Ihre Angaben sind unvollständig. Bitte geben Sie\n\n')
reservierungsformular.submit();
else
{
alert(fehler);
document.reservierungsformular.nachname.focus();
return false;
};
Kleiner Hinweis: anstatt "resevierungsformular.submit();" reicht ein "return true;". Sonst könnte es sein, dass die Anfrage zweimal abgesendet wird. (Einaml vom Skript und einmal weil kein false zurückgegeben wurde)
Vielen Dank, Felix. Ich habe es zwar nun ausgiebig getestet, aber sicher ist sicher. Werde das noch ändern.
Grüße,
Michael
Kleiner Hinweis: anstatt "resevierungsformular.submit();" reicht ein "return true;". Sonst könnte es sein, dass die Anfrage zweimal abgesendet wird. (Einaml vom Skript und einmal weil kein false zurückgegeben wurde)