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

[FRAGE] Seite darf nur verlassen werden wenn Form != changed

Swiper

New member
Hallo,

ich habe folgendes Script gefunden. Das Script prüft ob der Initialwert der FormFelder = Endwert der Formfelder ist. Wenn nicht, soll es beim verlassen der Seite einen Hinweis werfen.
Code:
var initial = "";

$(document).ready(function()
{
    initial = $("form").serialize();
});

function hasChanged()
{
    return !(initial === $("form").serialize());
}

window.onbeforeunload = function (e)
{
    if (!hasChanged())
        return;
       
    var e = e || window.event,
        str = 'Wollen Sie die Seite wirklich verlassen, ohne die Änderungen zu speichern?';

    // For IE and Firefox prior to version 4
    if (e)
        e.returnValue = str;
 
    // For Safari
    return str;
}
	</script>

Der Haken an der Sache ist aber, wenn ich den Submit Button drücke, erscheint die Meldung auch. Das sollte natürlich nicht sein.

Dazu müsste ich wohl noch den Part
Code:
if (!hasChanged())
um eine OR #SubmitID erweitern. Aber das bekomme ich einfach nicht hin.

Vielleicht kann mir jemand dabei behilflich sein!?
 
Ich mach es so
Code:
function noUnload(){ return "Bitte fahren Sie das System erst herunter, bevor Sie den Browser aktualisieren oder schließen!\n\nEs könnte sonst passieren, dass einige ihrer Änderungen nicht gespeichert werden!"; }
function noUnload_set(){ window.onbeforeunload = noUnload; }
function noUnload_none(){ window.onbeforeunload = ''; }

einfach vor dem abschicken die function noUnload_none() aufrufen
 
Als Alternative könntest du auch im onsubmit das initial = $("form").serialize(); nochmal ausführen lassen.

PS: Globale Variablen sind nicht gut - v.A. wenn sie so allgemeine Namen tragen... besser du packst dein ganzes Skript in einen Funktionssope.
 
Zurück
Oben