2017-03-24 1 views
0

Ich habe Seitenumleitungen/reloads mit window.beforeunload Funktion deaktiviert, aber sobald die Formularübergabe auf der Seite passiert, möchte ich auf die nächste Seite umleiten, ohne die window.beforeunload Warnungen anzuzeigen. Wie kann ich das machen?Disable window beforeunload -Eigenschaft für eine Schaltfläche

$(window).on("beforeunload", function() { 
    return "Changes won't be saved."; 
}); 

Dies ist der Knopf, der den Alarm nicht ausgelöst werden soll:

<form id="command" action="/some-uri" method="post"> 
    <button type="submit" value="NEXT" class="btn btn-red- light">NEXT</button> 
</form> 
+0

Verwenden Sie also vielleicht einen Klick-Handler auf dieser Schaltfläche (oder übergeben Sie den Handler in diesem Formular), um den Vorab-Handler zu entfernen? – nnnnnn

+0

Schreiben Sie ein Submit-Ereignis für das Formular und fügen Sie 'e.stopImmediatePropagation()' hinzu –

Antwort

0

eine Klasse zu jedem Elemente hinzufügen, die Sie nicht wollen, um das Ereignis auslösen, zum Beispiel“.not-Trigger “, dann:

$(".not-trigger").on("click", function(){ 
    $(window).off("beforeonunload"); 
}); 
1

prüfen eine Variable

Pseudocode

if some dirty change -> window.hasSomeDirtyChanges = true; 
if all dirty changes saved -> window.hasSomeDirtyChanges = false; 

$(window).on("beforeunload", function() { 
    if(!window.hasSomeDirtyChanges) return true; 
    return "Changes won't be saved."; 
}); 

Auf diese Weise müssen Sie nicht jedes Mal, wenn Sie auf eine Seite gehen, die Bindung lösen. Dies funktioniert für alle Seiten, Sie müssen nur eine Variable verwalten.

Verwandte Themen