Problem beim Submit mit Google Chrome

Hallo Experten,

ich möchte mit den Werten eines Forms ein PHP-Dokument durch Drücken der ENTER-Taste ausführen.

Ich habe also in der action="" Eigenschaft des Forms das entsprechende PHP-Dokument angegeben und prüfe in einem Input-Feld im „onkeydown()“-Ereignis per Javascript ob die gedrückte Taste die ENTER-Taste ist.
Wenn das der Fall ist, dann schicke ich in Javascript über den Befehl document.formular.submit() das Formular ab, führe also das in action="" definierte PHP-Dokument aus.

Das Problem ist, dass Google Chrome jedes Mal, wenn ich die ENTER-Taste drücke, das Formular auch ohne onkeydown()-Ereignis abschickt. Das heißt, das Form wird gleich ZWEI MAL abgeschickt, der Text aus dem Input-Feld landet doppelt in meiner Datenbank.

In Firefox passiert das nicht. Firefox geht nur durch das onkeydown()-Ereignis und alles funktioniert normal.

Habt ihr vielleicht eine Idee, wie ich dieses Problem lösen kann?

Ich bin dankbar für jede Hilfe!

Viele Grüße
Florian

Hallo,

auf das generelle Verhalen des Browsers wirst du leider keinen Einfluß nehmen können, du kannst aber mal probieren, ein „hidden field“ in deiner Form zu definieren und dann brauchst du noch das „onsubmit“ Event. In diesem prüftst du dann ob ein bestimmter Wert in dem Feld steht, wenn ja dann „return false“ wenn nein, setzt du dann den bestimmten Wert in das „hidden field“, so kannst du das doppelte absenden verhindern! Siehe auch http://de.selfhtml.org/javascript/sprache/eventhandl…

und

http://de.selfhtml.org/navigation/suche/index.htm?Su…

Lg
Richie

Hallo Experten,

ich möchte mit den Werten eines Forms ein PHP-Dokument durch
Drücken der ENTER-Taste ausführen.

Ich habe also in der action="" Eigenschaft des Forms das
entsprechende PHP-Dokument angegeben und prüfe in einem
Input-Feld im „onkeydown()“-Ereignis per Javascript ob die
gedrückte Taste die ENTER-Taste ist.
Wenn das der Fall ist, dann schicke ich in Javascript über den
Befehl document.formular.submit() das Formular ab, führe also
das in action="" definierte PHP-Dokument aus.

Das Problem ist, dass Google Chrome jedes Mal, wenn ich die
ENTER-Taste drücke, das Formular auch ohne
onkeydown()-Ereignis abschickt. Das heißt, das Form wird
gleich ZWEI MAL abgeschickt, der Text aus dem Input-Feld
landet doppelt in meiner Datenbank.

In Firefox passiert das nicht. Firefox geht nur durch das
onkeydown()-Ereignis und alles funktioniert normal.

Habt ihr vielleicht eine Idee, wie ich dieses Problem lösen
kann?

naja, durch eine anfrage in html od. javascript, weil mit php hat das ja nix zu tun.

das problem ist: formulare werden unter gewissen umstaenden auch abgeschickt, wenn man nur in einem textfeld enter drueckt. deshalb musste man irgendwann form-validator erfinden, weil die datenerfasser von frueher gewohnt waren mit enter von einem feld zum naechsten zu schalten. und man dann nur schrott in seiner datenbank hatte.

das machen alle browser seit ewigen zeiten immer bei unterschiedlichen formularen unterschiedlich und keiner weiss nach welchem schema.

das verhalten koennte sich mit:

unterdruecken lassen, waere zu pruefen, ob dann this.form.submit() noch geht.
weiter koenntest du onsubmit eine eigenschaft am form speichern, wenn diese gesetzt ist, wird das form nicht abgeschickt.

Hallo und danke für eure Hilfe!

Das mit dem onsubmit=„return false“ hab ich schonmal probiert und dann ging tatsächlich gar nichts mehr. :stuck_out_tongue:

Zwischenzeitlich hab ich aber etwas gefunden, was dieses doppelte Absenden verhindert:
Ich verwende statt dem onkeydown-Ereignis, das onkeypressed-Ereignis - seltsamerweise klappt das, wenn ich auch nicht weiß warum… (ich sollte mich natürlich nicht damit zufrieden geben, aber im Moment tu ichs einfach). :smile:

Nochmal vielen Dank und viele Grüße
Florian