return false versagt?
Basti Kurz
- javascript
0 Ingo Turski0 Struppi
Hallo!
Folgendes Problem:
Ich checke mit Javascript, ob alle Pflichtfelder eines Formulars ausgefüllt wurden. Ist das nicht der Fall, soll das Script FALSE zurückgeben, damit mein Formular nicht abgeschickt wird.
Das alleine funktioniert auch. Jetzt dachte ich mir allerdings, daß ich die auszufüllenden Pflichtfelder noch mal vorher in roter Schrift markiere und hier funktioniert dann nichts mehr, mein Formular wird jetzt trotzdem abgeschickt. Scheinbar funktioniert die Rückgabe des FALSE nicht mehr.
Was passiert hier? Der wichtige Code sind diese Zeilen:
if ( !ausgefuellt )
{
document.writeln("Es wurden nicht alle Pflichtfelder ausgefüllt");
document.getElementById("vorname").style.color = "#ff0000";
document.getElementById("name").style.color = "#ff0000";
document.getElementById("geburtsdatum").style.color = "#ff0000";
return false;
}
Danke für Hilfe.
Hi,
document.writeln("Es wurden nicht alle Pflichtfelder ausgefüllt");
überschreibst Du hiermit nicht die gesamte Seite incl. des Scripts?
Probier's doch mal mit alert().
freundliche Grüße
Ingo
Probier's doch mal mit alert().
Danke, aber mit alert() bekomme ich den gleichen Effekt. Das hatte ich da auch schon stehen. Also daran liegt es nicht.
Hi,
tja, ich fürchte, dann brauchen wir schon etwas mehr code...
freundliche Grüße
Ingo
Also dann halt mehr Code...
Das Formular beginnt so:
<form action="<?= $_SERVER[PHP_SELF] ?>" name="profildaten" method="post" onsubmit="return formcheck();">
Danach folgen die einzelnen Felder in diesem Stil:
<label id="vorname">Vorname</label><input type="text" name="vorname" value="">
Hier im HTML-Code sind definitiv keine Fehler.
Wird das Formular abgeschickt, dann wird dieser Code ausgeführt (externes Javascript):
function formcheck()
{
var vorname = document.profildaten.vorname.value;
var name = document.profildaten.name.value;
var geburtsort = document.profildaten.geburtsort.value;
var geburtsdatum = document.profildaten.geburtsdatum.value;
var strasse = document.profildaten.strasse.value;
var plz = document.profildaten.plz.value;
var ausgefuellt = true;
var pflichtfelder = new Array( vorname, name, geburtsort, geburtsdatum, strasse, plz );
for ( i=0; i<pflichtfelder.length; i++ )
{
if ( pflichtfelder[i] == "" )
{
ausgefuellt = false;
break;
}
}
if ( !ausgefuellt )
{
alert("Es wurden nicht alle Pflichtfelder ausgefüllt");
document.getElementById("vorname").style.color = "#ff0000";
document.getElementById("name").style.color = "#ff0000";
document.getElementById("geburtsort").style.color = "#ff0000";
document.getElementById("geburtsdatum").style.color = "#ff0000";
document.getElementById("strasse").style.color = "#ff0000";
document.getElementById("plz").style.color = "#ff0000";
return false;
}
else
{
alert("ok");
return true;
}
}
Und wenn ich die document.getElementByID("").style.color ... rausnehme, dann funktioniert es auch. Sind die aber drin, dann wird mein Formular gnadenlos in jedem Browser abgeschickt.
Hallo Bastian,
ersetze mal
<label id="vorname">Vorname</label><input type="text" name="vorname" value="">
durch
<label for="vorname">Vorname</label><input type="text" id="vorname" value="">
dann sollte es gehen.
(Ansonsten hast Du zwei Elemente mit id/name = "vorname") und eines davon ist immer gefüllt.)
Grüße
Andreas
Hi Andreas!
Nein, leider geht es auch dann nicht. Gleicher Effekt. Mein Formular wird abgeschickt.
Hallo Bastian,
Nein, leider geht es auch dann nicht. Gleicher Effekt. Mein Formular wird abgeschickt.
Ich habe es jetzt mal bei mir ausprobiert: Die Meldung kommt, und das Formular wird nicht abgeschickt. Also ist noch irgendwo bei dir ein Fehler drin. Stell das Ganze mal online, damit man es sich mal ansehen kann.
Grüße
Andreas
Was passiert hier? Der wichtige Code sind diese Zeilen:
if ( !ausgefuellt )
{
document.writeln("Es wurden nicht alle Pflichtfelder ausgefüllt");
hier überschreibst du das aktuelle Dokument. Je nach Browser passiert irgendetwas.
Struppi.