Hallo Leute,
ich schreibe gerade eine Datenbank Anwendung für ein Inventar, welche im Intranet einer Firma läuft.
In dieser Anwendung kann man Datensätze ändern, und wenn man einen Datensatz geändert hat und dann von der Seite weggeht (reload, weg navigieren, Fenster schließen) ohne das Formular zu Submitten, fange ich diese Situation ab, indem ich überprüfe, ob das Formular verändert wurde, und wenn ja, kommt eine confirm Meldung die einem die Wahl gibt ob man die Seite verlassen möchte und die Änderungen verliert oder ob man weiter auf der Seite bleiben will.
Nun hat sich bei den ersten Test von Benutzern herausgestellt, das sich viele Benutzer wünschen, das man nicht nur wählen kann zwischen ok und Cancel, sondern das es eine dritte Funktion gibt, die es einem erlaubt die Seite zu verlassen und gleichzeitig die Änderungen im Formular zu speichern.
Mein Ansatz war nun folgender:
Ich Bastel einen eigenen Dialog mit den drei Buttons in einem Div, was bei OnBeforeUnload sichtbar wird und den Unload bis zur Betätigung einer der drei Buttons verzögert.
Hier komm ich nun nicht weiter. Ich habe den Dialog und ich kann einen Submit via Ajax Request abfeuern.
Allerdings weis ich nicht so richtig wie ich den UnLoad entsprechend so lange Pausieren kann bis ich die entsprechend vom Benutzer gewollten Funktionen ausgeführt habe. Ein Anhalten des Vorgangs habe ich bisher nur durch confirm() Dialoge hinbekommen.
Gibt es hier irgendeine Möglichkeit? Gibt es einen anderen Ansatz? Bin Ich auf dem Holzweg?
Ich würde mich sehr freuen, wenn mir jemand eine Richtung andeuten kann.
Vielen Dank,
Tromton
So hatte ich es vorher:
window.onbeforeunload = function(e)
{
if($($("current_form_id").value).hasClassName('modified') && !$($("current_form_id").value).hasClassName('saving'))
{
return 'You have unsaved content, would you really like to leave the page? All your changes will be lost.';
}
};
Erste Versuche mit der neuen Funktion:
function leave_form_dirty_dialogue()
{
var return_value = false;
Dialog.info("<table cellspacing=\"10\"><tr><td>You have unsaved content, would you really like to leave the page?<br>All your changes will be lost.<br><br><p align=\"right\"><input type=\"button\" name=\"save\" value=\"SAVE & LEAVE\" id=\"save\" onClick=\"return_value = true;\"> <input type=\"button\" name=\"stay\" value=\"STAY\" id=\"stay\" onClick=\"Dialog.okCallback();\"> <input type=\"button\" name=\"leave\" value=\"LEAVE & LOOSE\" id=\"leave\" onClick=\"return_value = true;\"></p></td></tr></table>",{className: 'mac_os_x', zIndex: 99, width:320, height:100});
return return_value;
}
window.onbeforeunload = leave_form_dirty_dialogue();