[Webformular:]Abschicken durch Return/Enter verhindern

maceis

maceis

Aktives Mitglied
Thread Starter
Dabei seit
24.09.2003
Beiträge
16.880
Reaktionspunkte
626
hallo zusammen,,

wie kann ich in einem <form> verhindern, dass durch Return/Enter das Formular abgeschickt wird?
Auf die Dauer ist es etwas nervig, wenn immer wieder nicht oder halb ausgefüllte Formulare per Email ankommen.

Am besten wäre es, wenn Return und Enter einfach so wie Tab ins nächste Feld springen würden.

Danke im voraus.
 
Mach doch enfach eine Überprüfung per JavaScript.

Die Funktion kommt ins <form action="…" onsubmit="test()" />. Diese Funktion gibt dann true zurück, falls alles erfolgreich ausgefüllt wurde und false, falls etwas vergessen wurde. Wie es geht, siehst Du hier: http://de.selfhtml.org/javascript/beispiele/formulareingaben.htm

Pingu
 
Wenn Dein Webspace PHP unterstützt, könntest Du auch unausgefüllte Pflichtfelder als Fehler ausgeben und nicht versenden.
 
Wenn ein Formular per Submit-Button abgeschickt wird, wird der Name und der Value des Submit-Buttons als Variable übergeben. Also so z.B.

<input type="submit" name="submit" value="Absenden" />

Serverseitig kannst Du jetzt einfach prüfen ob der Wert von $_POST['submit'] "Absenden" ist. Falls ja wird abgesendet, falls nicht wird das Formular wieder mit den Werten ausgegeben. Zusätzlich würde ich aber noch per JavaScript prüfen. Ein feines Beispiel gibt's z.B. hier: http://www.cs.tut.fi/~jkorpela/forms/enter.html
 
wenn Du ein erneutes HTTP-Request verhindern willst,
dann bleibt eigentlich nur Javascript!

Variante 2 ist ein Automat in PHP, bei dem ein Formular sich nach Ausfüllen selbst aufruft und prüft. Im Fehlerfalle geht's erneut zur Eingabe ( mit Hinweis auf die fehlenden Felder) oder eben zur Aktion ( mail versenden).
 
Setze serverseitige Validatoren ein.
(und nicht javascript)
 
Vielen Dank für Eure Beiträge.

Zunächst einmal: Ich setze kein PHP ein und möchte eigentlich auch kein JavaScript verwenden
Es geht mir auch nicht um eine Überprüfung auf Vollständigkeit o.ä.

Ich möchte einfach nur, dass ein Return/Enter nicht den submit Button auslöst.

Die Lösung habe ich inzwischen gefunden (ganz in der Nähe - hihi):
<input type="submit" class="button" accesskey="s">
 
Kannst Du das bitte kurz erklären? Das macht in meinen Augen keinen grossen Sinn. Vlt. funktioniert es im ein oder anderen Browser da dort die "Enter-Funktion" per Acceskey umgesetzt wurde, aber Standard ist es doch sicherlich nicht dass auf solche Weise ein Submit per Enter unterbunden wird.
Übrigens ist das Verhalten dass Du hier unterbinden willst selbst schon ein Fehler, wie ich gerade gelesen habe. Laut Spezifikation sollte ein Formular nur per Enter abgesendet werden können wenn im gesammten Formular nur ein einziges einzeiliges Eingabefeld enthalten ist.
 
@dms
bisher konnte ich nur in Safari und IE 5+6 testen.
Funktioniert allerdings nicht wirklich zuverlässig, wie ich inzwischen feststellen musste ;(.
Für mich würde es schon Sinn machen, dass beim expliziten Konfigurieren eines Accesskeys die "Grundeinstellung", wenn man das mal so nennen will, überschrieben wird.

Falls noch jemad einen Tip hat: Bitte melden.
Hier in macuser.de wird übrigens mit Enter/Return nichts abgeschickt.
 
maceis schrieb:
@dms
bisher konnte ich nur in Safari und IE 5+6 testen.
Funktioniert allerdings nicht wirklich zuverlässig, wie ich inzwischen feststellen musste ;(.
Wie gesagt JavaScript. Sicherlich mag es die geben, die es auch abgestellt haben (das werden sicherlich auch die sein, die am lautesten Schreien). Aber ich behaupte, daß es in 90% der Fälle funktionieren wird.
maceis schrieb:
Hier in macuser.de wird übrigens mit Enter/Return nichts abgeschickt.
Das aber auch nur, wenn das Texteingabefeld markiert ist. Denn hier ist "Enter" halt für "neue Zeile". Wenn man dagegen das Titelfeld oder eines der Auswahlfelder markiert funktioniert das Absenden auch mit "Enter".

Pingu
 
Zurück
Oben Unten