• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Formular speichern, bevor man es verlässt

centauros

New member
Hallo liebes Forum,

Gibt es eine Möglichkeit mit einfachen Mitteln ein Formular bei Verlassen des Formulars zu speichern, wenn sich ein Wert in dem Formular geändert hat?

Ich habe Textfelder und Checkboxen in dem Formular.
Vielleicht gibt es einen Trick diese mit einfachen Mitteln abzufragen.

Und sowas will ich erreichen:
Wenn ich das Formular verlasse soll eine Funktion aufgerufen werden, die Wertänderungen in den Textfeldern und den checkboxen überprüft.
Hat sich ein Wert geändert, so soll man bei Verlassen des Formulars darauf hingewiesen werden das sich Werte in dem Formular geändert haben und man diese speichern möchte.

Klickt man auf Speichern, so wird das Formular gespeichert und geschlossen.
Klickt man auf Nein, so wird das Formular geschlossen.

Tips, Hinweise und Lösungsvorschläge sind herzlich Willkommen.

Grüße aus Kölle
 
Du könntest an das body tag den onblur Handler knüpfen und in der Funktion die gewünschten Aktionen ausführen. Gewünschte Änderungen dann per Ajax zum Server senden, damit sie nicht verloren gehen.
 
Was meinst du eigentlich genau mit "Verlassen" des Formulars?

Wenn du das Verlassen der Seite, auf der das Formular sich befindet, meinst, musst du dich mit dem onbeforeunload-Event beschäftigen. Aber die Möglichkeiten dabei sind recht beschränkt.
 
Besten Dank für Eure Antworten.

@Julian:
Mit cookies kenne ich mich etwas aus. Aber ich möchte die Eingaben gerne direkt in die Datenbank speichern.

@mikdoe:
Die Idee mit onblur und Ajax klingt ganz gut. Allerdings kenne ich mich überhaupt nicht mit Ajax aus. Wenn Du mir verräts wie ich eine PHP Funktion per Ajax anspreche, dann mache ich den Rest. Allerdings ist damit noch nicht geklärt, wie ich herausfinde wo und vor allem ob es überhaupt Änderungen in den jeweiligen Feldern des Formulars gegeben hat. Erst dann möchte ich ja die Eingaben / Änderungen speichern und das Formular automatisch schließen.

@kkapsner:
Ich habe mehrere Formulare die jeweils in PHP eingebunden sind.
Alle sind mit einem "Weiter" und einem "Zurück" Button versehen. Klicke ich in dem ersten Formular auf den BUtton "Weiter", dann soll das zweite Formular sich öffnen und das erste Formular soll geschlossen werden. Allerdings soll in dem ersten Formular noch geprüft werden, ob sich in den Eingaben etwas geändert hat. Wenn ja, dann soll man gefragt werden ob man die Änderungen speichern möchte. Wenn nein, dann soll sich das zweite Formular öffnen.
 
Du könntest kurz vor dem Ajax durch alle Formularfelder iterieren und schauen, ob deren value sich gegenüber der Vorbelegung geändert hat.

Aber wir müssen erstmal Korbinian fragen: Was kann man im onbeforeunload denn alles machen? Gehen da auch noch langwierige Formularprüfungen mit anschl. Ajax-Request oder ist man da irgendwie beschränkt? Ich habe damit auch noch nicht gearbeitet.
 
Was kann man im onbeforeunload denn alles machen? Gehen da auch noch langwierige Formularprüfungen mit anschl. Ajax-Request oder ist man da irgendwie beschränkt?

Habe etwas ähnliches dazu gefunden (zwar zu onunload); aber da geht es auch um das Thema:
...after the visitor leaves the page (window.onunload), I'm sending the time through an XMLHttpRequest to a PHP file, which will store it in my DB...

JS .onunload-event won't always work
 
In onbeforeunload kann man schon kompliziertere Abfragen einbauen. Nur AJAX ist darin nicht möglich, da direkt nach dem Event die Seite verlassen wird und deswegen alles JS gestoppt und zurückgesetzt wird. Man könnte SJAX (synchron) machen, was aber nervig sein kann, da es blockt.
 
Danke Euch allen für die hilfreichen Beiträge. Ich werde noch mal in mich gehen und mal ein Paar Methoden ausprobieren.
Sobald ich eine Lösung gefunden habe melde ich mich.
 
Falls du mit localStorage arbeiten möchtest, ich beschäftige mich jetzt auch damit. Scheint ziemlich genial und einfach zu sein. Kannst dich dann gern nochmal melden, dann tauschen wir uns aus.
 
Zurück
Oben