0

ページを離れる前にフォームフィールドに変更があったかどうかを確認するためのこの小さなコードがあります

$(document).ready(function(){

    var form = $('#submit-form'),
        original = form.serialize();
    form.submit(function(){
        window.onbeforeunload = null;
    });

    window.onbeforeunload = function(){

        if (form.serialize() != original)
            return 'Changes detected';
    };
});

うまくいきました。次に、 tag-itを自分のページに統合すると、上記のスクリプトが機能しなくなりました。tag-it.js が含まれている行をコメントアウトすると、再び機能します。JavaScriptに関してはかなり無知で、なぜ機能しないのかわかりません。

これがtag-it.jsスクリプトへのリンクです(これはかなりいいです)

https://github.com/aehlke/tag-it/blob/master/js/tag-it.js

編集:

機能しないということは、フォームを編集してページを離れたい場合にポップアップ ウィンドウがないことを意味します。

tag-it.js ファイル (上記のリンク) を含めない場合、すべて正常に動作し、フォームを編集してページを離れようとするとポップアップ ウィンドウが表示されます。

4

1 に答える 1

0

window.onbeforeunload が既に定義されているかどうかを確認する必要があります。

以下のように古いものを呼び出します: // 最初のファイル

 window.onbeforeunload = function(){

            if (form.serialize() != original)
                return 'Changes detected';
        };
    // other file
    var olderonbeforeunload = window.onbeforeunload;

    window.onbeforeunload = function(){
           if(typeof olderonbeforeunload == 'function'){
           olderonbeforeunload.apply(arguments);
         }
           // new code
        };
于 2012-09-11T12:47:12.933 に答える