onSubmit=false und trotzdem wird Form abgeschickt
Hr. Hias
- javascript
0 Cheatah
Hi!
Ich habe folgendes Problem und komm einfach nicht dahinter. Eigentlich ist es eine ganz simple Eingabeabfrage, die bei Nichteingabe eines Feldes den Wert false retournieren soll. Sie sieht folgender maßen aus:
<script language="JavaScript">
<!--
function check() {
if (document.input.elements[0].value == "") {
alert("Artikelnummer muss angegeben werden!");
document.input.elements[0].focus();
return false;
}
if (document.input.elements[1].value == "") {
alert("Bezeichnung muss angegeben werden!");
document.input.element[1].focus();
return false;
}
if (document.input.elements[2].value == "") {
alert("Preis muss angegeben werden!");
document.input.element[2].focus();
return false;
}
return true;
}
//-->
</script>
Die Form sieht so aus (in PHP):
<? //viel Code, dann:
echo "<form name="input" action="CreateArticle.php" method="POST" onSubmit="return check();">";
echo "<table border=0 cellpadding=0 cellspacing=0>";
echo "<tr><td>Artikel Nummer: </td><td><input type="text" size=6 name="REQUEST[art_nr]"></td></tr>";
echo "<tr><td>Bezeichnung: </td><td> <input type="text" size=50 name="REQUEST[bezeichnung]"></td></tr>";
echo "<tr><td>Verkaufspreis: </td><td> <input type="text" size=10 name="REQUEST[vk]"></td></tr>";
echo "<tr><td></td><td><input class="green" type="submit" value="Artikel anlegen"></td></tr>";
echo "</table>";
echo "</form>";
?>
Das Problem: er übergibt die Form immer, auch wenn die Funktion aufgerufen wird und eigentlich false retour geben müsste. Die Funktion wird aufgerufen, da ich auch die Message-Box bekomme. onSubmit=false sollte doch die Übergabe verhindern!? In der Syntax finde ich keinen Fehler... Mit der Suchfunktion im Forum leider auch nix. Habs auch schon mit "reinem" HTML-Code probiert, ohne die Hochkommers zu escapen. Genau das Selbe... Kann mir vielleicht jemand einen Tip geben? ;o)
mfg, Hr. Hias
Hi,
<script language="JavaScript">
das language-Attribut wird seit bald einem Jahrzehnt nicht mehr benötigt (und war kurzfristig sogar verboten), dafür fehlt das zwingend erforderliche type-Attribut.
Die Form sieht so aus (in PHP):
Bitte eliminiere jedweden PHP-Code, sofern Du kein PHP-Problem hast. Serverseitiger Code kann bei clientseitigen Problemen niemals helfen, wohl aber stören, bis hin zur Unlösbarkeit des Problems.
Das Problem: er übergibt die Form immer, auch wenn die Funktion aufgerufen wird und eigentlich false retour geben müsste.
"Müsste" müsste reichen, tut es aber nicht. Überprüfe Deine Annahmen. Als nützliches Mittel hat sich alert() erwiesen.
Die Funktion wird aufgerufen, da ich auch die Message-Box bekomme.
Ja, aber kommt sie auch bis zu der Code-Stelle, an der die Rückgabe stattfinden soll?
document.input.element[1].focus();
Wie viele Elemente namens "element" enthält das Formular?
onSubmit=false sollte doch die Übergabe verhindern!?
Ja, im Gegensatz zu onsubmit=undefined.
In der Syntax finde ich keinen Fehler... Mit der Suchfunktion im Forum leider auch nix.
Was sagen die Fehlerkonsolen Deiner Browser?
Habs auch schon mit "reinem" HTML-Code probiert, ohne die Hochkommers zu escapen.
Also mit dem, was der Client ohnehin erhält. Für diesen existiert kein PHP - was einer der Hauptgründe ist, weshalb PHP-Code für HTML-, CSS-, JavaScript- usw. -Probleme völlig nutzfrei ist.
Cheatah
document.input.element[1].focus();
Wie viele Elemente namens "element" enthält das Formular?
lol, so ein Sche*ß... Wenn da element und nicht elements mit s steht, kann das nix werden... und ich such mich da zum Grüppel... Ich Ei! Hehe. Sonst funktioniert alles! Danke! *kopfschüttlendübermichselbstlach* Ich geh mich jetzt ohrfeigen! Bye!
[closed]
Hi,
lol, so ein Sche*ß... Wenn da element und nicht elements mit s steht, kann das nix werden... und ich such mich da zum Grüppel... Ich Ei! Hehe. Sonst funktioniert alles! Danke! *kopfschüttlendübermichselbstlach* Ich geh mich jetzt ohrfeigen! Bye!
sich 'n Stündchen aufs Ohr zu hauen mag zwar helfen, aber nachdem man die Lösung gefunden hat ist das nicht mehr zwingend nötig ;-)
Cheatah
Hello out there!
das language-Attribut […] war kurzfristig sogar verboten
?? Von welchem Zeitraum sprichst du?
See ya up the road,
Gunnar
Hi,
das language-Attribut […] war kurzfristig sogar verboten
?? Von welchem Zeitraum sprichst du?
ab einschließlich HTML/4.0, bis ausschließlich HTML/4.01.
Cheatah
Hello out there!
das language-Attribut […] war kurzfristig sogar verboten
?? Von welchem Zeitraum sprichst du?ab einschließlich HTML/4.0, bis ausschließlich HTML/4.01.
Nicht, dass ich nicht schon vor meiner Rückfrage nachgeschaut hätte:
<!ATTLIST SCRIPT
charset %Charset; #IMPLIED -- char encoding of linked resource --
type %ContentType; #REQUIRED -- content type of script language --
language CDATA #IMPLIED -- predefined script language name --
Dass es auch die Variante Transitional gibt, solltest du doch inzwischen wissem. ;-)
See ya up the road,
Gunnar
Hi,
Dass es auch die Variante Transitional gibt, solltest du doch inzwischen wissem. ;-)
Du hingegen solltest noch lernen, dass Menschen in aller Regel keine computerlesbaren und somit absolut unmissverständlichen Aussagen machen. Deine Feststellung kollidiert in keiner Weise mit dem, was ich sagte.
Cheatah
Hello out there!
Du hingegen solltest noch lernen, dass Menschen in aller Regel keine computerlesbaren und somit absolut unmissverständlichen Aussagen machen.
Das aus deinem Munde? ;-) [</archiv/2007/4/t149612/#m971870>] SCNR.
Deine Feststellung kollidiert in keiner Weise mit dem, was ich sagte.
Du sagtest „dafür fehlt das zwingend erforderliche type-Attribut“; von HTML 3.2 sprichst du also nicht, dort hatte das 'script'-Element gar keine Attribute. [HTML32]
Das 'language'-Attribut war in HTML 4.0 Transitional erlaubt und ist es noch in HTML 4.01 Transitional und XHTML 1.0 Transitional. Es war in HTML 4.0 Strict verboten* und ist es noch in HTML 4.01 Strict und XHTML 1.0 Strict.
Wenn du also schreibst „war kurzfristig sogar verboten“, vergleichst du HTML 4.0 Strict mit HTML 4.01 Transitional – Äpfel mit Birnen.
See ya up the road,
Gunnar
* seit 1998-04-24: “The language attribute for the SCRIPT element […] is no longer defined in the Strict DTD” [HTML40:19980424 §A.2] Es war also im Gegenteil auch in der Strict-Variante kurzfristig sogar _erlaubt_. [HTML40:19971218 §21]