2

これはすでに尋ねられていますが、なぜこれがうまくいかないのかわかりません。

http://jsfiddle.net/M9tnP/16/

フォームの変更を検出しようとしています。ユーザーが移動しようとすると、変更が失われることを確認してもらいます...

var dirty = false;
$("form#add_item :input").change(function() {
    dirty = true;
});

$("window").on('beforeunload', function() {
    if (dirty) {
        return 'You have unsaved changes! If you leave this page, your changes will be lost.';
    }

}); </ p>

4

2 に答える 2

7

オブジェクトにonbeforeunload直接イベントハンドラーを設定する必要があります。window

var dirty = false;
$("form#add_item :input").change(function() {
    //alert("form changed!")
    dirty = true;
});

window.onbeforeunload = function() {
    if (dirty) {
        return 'You have unsaved changes! If you leave this page, your changes will be lost.';
    }
};​

実例: http: //jsfiddle.net/M9tnP/20/

于 2012-09-26T18:43:50.420 に答える
0

必要なもの:

$(window).on('beforeunload', function() {...})

、 いいえ:

$("window").on('beforeunload', function() {...})

(引用符はありませんwindow)。javascript変数をjQueryオブジェクト内に$(window)ラップします。ここで、ページ上のすべてのタグが選択されます。タグは正確に0です。window$("window")<window>

(ほとんどの場合。実際には、を実行して$('body').append('<window></window>')から、$("window")その新しいタグに一致させることができますが、実行しないでください。)

于 2013-08-08T21:12:06.217 に答える