2010-06-13 2 views
9

Ich weiß, das grenzt an das Tabu hier, und antworten Sie bitte nicht mit „Sie sollten dies nie tun“ usw.Alert-Benutzer, wenn sie den Browser zurück Knopf drücken - mit gutem Grund

Ich habe eine sehr langes Formular in einem Assistenten, und einige Benutzer sind es zu gewohnt, die Schaltflächen zum Vor- und Zurückblättern des Browsers zu verwenden, die sie anstelle der Schaltflächen "Zurück" und "Weiter" im Formularassistenten verwenden. Wenn sie den Zurück-Knopf des Browsers drücken, verlieren sie alle ihre Formulardaten (was ein Schmerz in den Arsch ist, da das Formular so lang ist).

Ist es möglich, eine Warnung anzuzeigen, dass, wenn eine Schaltfläche "nimm mich hier raus" und eine Schaltfläche "Abbrechen" haben, wenn sie Abbrechen drücken, wird die Funktion der Zurück-Schaltfläche abgebrochen?

+2

Ich bin mir nicht sicher, dass dies eine "Niemals" -Regel ist, die Sie brechen. Stackoverflow warnt mich, wenn ich versuche, mich von einer Seite zu entfernen, auf der ich keine Änderungen gespeichert habe, und von Gmail, meiner Bank usw. Und ich bin immer dankbar dafür. Ich habe auch gesehen, dass mehrseitige Formulardaten auf Vor- und Zurück-Browseraktionen bestehen, aber ich würde mich unten mit Sarfrazs Warnung zufrieden geben. – msw

Antwort

8

Sie sollten eine Nachricht aus dem onbeforeunload Ereignis zurückzukehren, wie folgt aus:

window.onbeforeunload = function() { 
    return "Leaving this page will reset the wizard"; 
}; 

Beachten Sie, dass dieses Ereignis ausgelöst wird, wenn der Benutzer die Seite für jeder Grund verlässt, auch nach dem Assistent beendet.
Sie sollten eine Markierung setzen, wenn der Assistent fertig ist und keine Nachricht zurückgibt.

+0

window.onbeforeunload = function() { return "Wenn diese Seite verlassen wird, wird der Assistent zurückgesetzt"; }; hat ganz gut funktioniert. Obwohl ich die jQuery-Syntax bevorzuge, konnte ich den Code von Sarfraz Ahmed nicht erhalten, um eine Schaltfläche zum Abbrechen und OK anzuzeigen. Danke SLaks –

+0

Wie setzt man eine Flagge, wenn der Assistent fertig ist? unbedingt brauchen! –

+0

Es kommt darauf an. Wie beendet dein Zauberer? Machen Sie eine globale 'var isWizardFinished = false;' und setzen Sie sie auf 'true', wenn der Assistent fertig ist. – SLaks

1

Sie können die jQuery BBQ-Plugin verwenden, um die Funktionalität der nächsten/vorherigen Tasten neu zu schreiben, es seemless Übergang in diesem „Wizard“

http://benalman.com/projects/jquery-bbq-plugin/

Obwohl es ein wenig komplex zu Setup zu machen, Sehen Sie sich die Beispiele an, wenn Sie nach der gleichen Funktionalität suchen.

Wahrscheinlich müssen Sie Ihren Code umgestalten, um Platz zu schaffen, und es wird Stunden dauern.

Verwandte Themen