8

フォームを送信せずに別のページにリダイレクトしようとした場合にユーザーに警告するために、次のJavaScriptコードを使用しています。

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

これは正常に機能していますが、ユーザーが送信ボタンを使用してフォームを送信しようとすると、確認ボックスが表示されるという問題があります。ユーザーがフォームを送信するかどうかの確認を求めたくありません。そうでない場合は、確認を求めます。どうしてそれは可能ですか?

4

2 に答える 2

10

状態変数を維持します。ユーザーが送信ボタンをクリックすると、状態がuserSubmitted=True;に設定されます。
状態変数には、グローバル変数または非表示のコントロールが含まれる場合があります。

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:クロスブラウザのonbeforunload互換性のクロスチェック。

于 2013-01-31T11:41:36.987 に答える
2

単純。

グローバル変数を持っているだけ

var can_leave = false;

フォーム上:

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

そしてあなたのonbeforeunload()ハンドラーの中にこれがあります:

window.onbeforeunload = function() {
if (!can_leave)   return 'Are you sure that you want to leave this page?';
};
于 2013-01-31T11:43:19.793 に答える