2013-01-31 20 views
6

Korzystam z następującego kodu JavaScript, aby ostrzec użytkownika, jeśli próbuje przekierować na inną stronę bez przesyłania formularza.Nie pytaj potwierdzić, jeśli użytkownik przesyła formularz

window.onbeforeunload = function() { 
    return 'Are you sure that you want to leave this page?'; 
}; 

Działa to dobrze. Ale mój problem pojawia się, gdy użytkownik, który próbuje przesłać formularz przy użyciu przycisku potwierdzenia, pojawi się. Nie chcę pytać o potwierdzenie, jeśli użytkownik przesyła formularz, w przeciwnym razie chcę poprosić o potwierdzenie. Jak to jest możliwe?

+1

sprawdź 'onbeforeunload'. Myślę, że to nie działa w chrome lub firefox – Ashwin

+0

Znalazłem, jak to działa dobrze zarówno z Chrome i Firefox. Ale oba z nich reaguje inaczej. W moim przypadku Firefox pyta: "Ta strona prosi o potwierdzenie, że chcesz odejść - dane, które wprowadziłeś, mogą nie zostać zapisane." Ale pyta o potwierdzenie chrome "czy na pewno opuścisz stronę Czy na pewno chcesz opuścić tę stronę?" – shihabudheen

Odpowiedz

8

Zachowaj zmienną stanu. gdy użytkownik kliknie przycisk przesyłania ustaw stan na userSubmitted=True;
Zmienna stanu może zawierać zmienną globalną lub ukrytą kontrolę.

var userSubmitted=false; 

$('form').submit(function() { 
userSubmitted = true; 
}); 

następnie sprawdzić jak ten

window.onbeforeunload = function() { 
    if(!userSubmitted) 
     return 'Are you sure that you want to leave this page?'; 
}; 

PS: krzyżak Sprawdzanie zgodności onbeforunload krzyżowej przeglądarce.

2

Proste.

Wystarczy mieć zmienną globalną

var can_leave = false; 

na formularzu:

$('form').submit(function() { 
... 
... 
can_leave = true; 
}); 

A wewnątrz uchwytu onbeforeunload() mieć to:

window.onbeforeunload = function() { 
if (!can_leave) return 'Are you sure that you want to leave this page?'; 
}; 
Powiązane problemy