IE ignortiert JS
Martin
- javascript
0 MudGuard0 uepselon0 fastix0 Stefan Muenz0 Martin
0 Marcus Budde
hallo,
ich habe ein script das die formulareingaben überprüft und erst dann das abschicken erlaubt.
wenn ich beim ie aber js ausschalte kann man das formular abschicken obwohl die bedingungen nicht erfüllt werden also die felder leer sind.
wie kann ich das verhindern?
wenn js deaktiviert ist sollte doch eigentlich garnix passieren oder?
function check()
{
if(document.f.name.value=="")
{alert("Sie haben nicht alle Felder ausgefüllt!"); return false;}
}
<input type="submit" onclick="return check();">
martin
Hi,
function check()
{
if(document.f.name.value=="")
^ ^ haben hier nichts verloren
{alert("Sie haben nicht alle Felder ausgefüllt!"); return false;}
^ ^ die hier ebenfalls nicht.
Es ist auch sehr geschickt, wenn eine Funktion in einem Fall einen definierten Returnwert hat, im anderen Fall aber keinen...
}
cu,
Andreas
hi,
if(document.f.name.value=="")
^ ^ haben hier nichts verloren
{alert("Sie haben nicht alle Felder ausgefüllt!"); return false;}
^ ^ die hier ebenfalls nicht.
das javascript steht in einem php-echo.hab ich vergessen rauszumachen
Es ist auch sehr geschickt, wenn eine Funktion in einem Fall einen definierten Returnwert hat, im anderen Fall aber keinen...
was meinst du???
danke für deine antwort
martin
<input type="submit" onclick="return check();">
Könnte es eventuell sein, dass "return check();" immer ein true liefert, weil die Funktion "check()" existiert?
change to:
<input type="submit" onClick="check();">
fastix
Moin!
<input type="submit" onclick="return check();">
Könnte es eventuell sein, dass "return check();" immer ein true liefert, weil die Funktion "check()" existiert?
Nein, daran liegt es garantiert nicht. Wenn, dann müßte man mit "return check" abfragen, ob die Funktion existiert. Wie man auch abfragt, ob "document.getElementById" existiert, dann aber mit "document.getElementById(id)" benutzt wird.
change to:
<input type="submit" onClick="check();">
Meeeep. Falsch!
- Sven Rautenberg
Moin!
<input type="submit" onClick="check();">
Meeeep. Falsch!
Naja. Ich progge ja auch kaum noch Javascripte :)
fastix
Hi,
Es ist auch sehr geschickt, wenn eine Funktion in einem Fall einen definierten Returnwert hat, im anderen Fall aber keinen...
was meinst du???
Guck Dir Deine Funktion an.
Welchen Wert return-iert sie, wenn document.f.name.value != "" ist?
cu,
Andreas
Hallo,
wie kann ich das verhindern?
<input type="submit" onclick="return check();">
<input type="button" onclick="check_send();">
die Funktion check_send() prüft die Felder und macht dann wenn alles ok ist, document.formularname.submit();
Ohne JS passiert gar nichts.
Gruß,
ueps
hallo ueps,
Ohne JS passiert gar nichts.
doch
sowie du es gemeint hast müsste man den button wahrscheinlich als nichtsubmit-button definieren aber so sendet er es einfach an das <form>-action.
Hallo,
sowie du es gemeint hast müsste man den button wahrscheinlich als nichtsubmit-button definieren aber so sendet er es einfach an das
<form>-action.
Genau, lass den Submit Button weg und mach nen normalen daraus. Wenn ohne JavaScript eh kein Formular versendet werden darf, kannst du getrost im JS Teil das Formular abschicken.
Gruß,
ueps
hallo,
<input type="submit" onclick="return check();">
Zum Absenden von Formulardaten brauchts kein Javascript.
Beim Klick auf den submit- Button wird also onClick="plapla" ignoriert und versendet. Also genau das gemacht, was js abfangen soll, welches aber in Narkose liegt. Es passiert dasselbe, was passiert, wenn der Torhüter pennt und jemand auf das Tor schießt...
Deine Frage ist also mit "Nein" beantwortet.
Einzige Möglichkeit des Verhinderns des Versendens leerer Formulare bei deaktiviertem Javascript:
Biete kein Formular an... Bau das Tor ab :)
fastix
Hallo Martin,
wenn js deaktiviert ist sollte doch eigentlich garnix passieren oder?
Nein, in diesem Fall passiert einfach das, was ohne JS passieren sollte: das Formular hat ein action-Attribut und einen Submit-Button, also wird beim Anklicken des Submit-Buttons das aufgerufen, was bei action angegeben ist.
Wenn du eine Formularueberpruefung haben willst, die auch ohne JavaScript funktioniert, musst du diese serverseitig durchfuehren, also z.B. in dem Script (z.B. Perl, PHP...), das bei action= aufgerufen wird. Falls du natuerlich bei action= eine mailto:-Adresse angibst, hast du keine Chance. Das ist nun mal einer der zahlreichen Nachteile von mailto-Formularen.
viele Gruesse
Stefan Muenz
Hallo Stefan,
was für eine ehre
Wenn du eine Formularueberpruefung haben willst, die auch ohne JavaScript funktioniert, musst du diese serverseitig durchfuehren
schade mit js auf der gleichen seite war das immer so schön bequem aber geht wohl nicht anders.
vielen dank
martin
Hi,
Also vorweg, die serverseitige lösung ist definitv die elgantere, aber wenn es darum geht, daß bei deaktiviertem JavaScript einfach garnichts passieren soll:
[...]
function check()
{
if(document.f.name.value=="")
{
alert("Sie haben nicht alle Felder ausgefüllt!");
}
else
{
document.f.submit();
}
}
[...]
<input type="button" VALUE="Und wech damit!" onClick="check();">
[...]
<NOSCRIPT>
Dieses Formular funktioniert nur, wenn Sie JavaScript aktivieren.<BR>
</NOSCRIPT>
[...]
Viele Grüße
Marcus