2013-01-31 5 views
6

フォームを送信せずに別のページにリダイレクトしようとすると、次のJavaScriptコードを使用してユーザーに警告しています。ユーザーがフォームを送信するかどうかを確認しないでください

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

これは、ユーザーがボタンの確認ボックスが表示されます提出使用してフォームを送信しようとしたときに私の問題があるfine.But取り組んでいます。 フォームを送信しているユーザーの確認を求めたくない場合は、確認する必要があります。どのように可能ですか?

+1

onbeforeunload' '確認してください。

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

そして、あなたのonbeforeunload()ハンドラ内

がこれを持っている:

ちょうどグローバル変数フォーム上

var can_leave = false; 

を持っています。私はそれがクロムかfirefoxのどちらでも動作しないと思う – Ashwin

+0

クロムとFirefoxの両方でうまくいけば私は見つけた。私の場合、Firefoxは を要求しています。「このページは、あなたが残したいことを確認するように求めています。あなたが入力したデータは保存されないかもしれません。 しかし、chrome asking confirm "このページを残してもよろしいですか 本当にこのページからおきたいですか?" – shihabudheen

答えて

8

は状態変数を維持します。ユーザがサブミットボタンをクリックすると、状態はuserSubmitted=Trueになります。
状態変数には、グローバル変数または非表示のコントロールが含まれている場合があります。クロスブラウザのためonbeforunloadの互換性のためのクロスチェック:

var userSubmitted=false; 

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

は、この

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

PSのように確認してください。

2

シンプルです。

window.onbeforeunload = function() { 
if (!can_leave) return 'Are you sure that you want to leave this page?'; 
}; 
関連する問題