2013-01-31 40 views
6

formu gönderdiğinde onaylamanızı istemiyorum. Kullanıcıyı, formu göndermeden başka bir sayfaya yönlendirmeyi denediğinde uyarmak için aşağıdaki JavaScript kodunu kullanıyorum.Kullanıcı formunu

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

Bu güzel çalışıyor.Ama benim kullanıcı gönder düğmesini kullanarak formu göndermeye çalışırken onay kutusu görünecektir. Formu gönderen kullanıcı doğrulamak istemiyorum, aksi halde onaylamak istiyorum. Bu nasıl mümkün olaiblir? Bir durum değişkenini korumak için

+1

onbeforeunload' 'kontrol edin:

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

Ve onbeforeunload() işleyicisi içinde

bu var:

Sadece küresel bir değişkeni formunuzda

var can_leave = false; 

var. Ben ya chrome ya da firefox – Ashwin

+0

içinde işe yaramadığını düşünüyorum çünkü hem krom hem de Firefox ile iyi çalışıyordum.Ama her ikisi de farklı yanıt veriyor. Benim durumumda Firefox soruyor "Bu sayfa sizden çıkmak istediğinizi doğrulamanızı istiyor - girdiğiniz veriler kaydedilemeyebilir." Ancak krom soruyu onaylıyor "sayfanın dışına çıktığınızdan emin misiniz? Bu sayfadan çıkmak istediğinizden emin misiniz?" – shihabudheen

cevap

8

. kullanıcı gönder düğmesini tıklattığında durumu userSubmitted=True olarak ayarlayın;
durum değişkeni bir global değişken veya gizli bir denetim içerebilir. Çapraz tarayıcı için onbeforunload uyumluluğu için çapraz kontrol:

var userSubmitted=false; 

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

sonra bu

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

PS gibi kontrol edin.

2

Basit.

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