いくつかのコードを入手しました(コピーして貼り付けたものを読んでください)
var catcher = function() {
var changed = false;
$('form').each(function() {
if ($(this).data('initialForm') != $(this).serialize()) {
changed = true;
$(this).addClass('changed');
} else {
$(this).removeClass('changed');
}
});
if (changed) {
return 'One or more forms on this page have changed. Are you sure you want to leave this page?';
}
};
$(function() {
$('form').each(function() {
$(this).data('initialForm', $(this).serialize());
}).submit(function(e) {
var formEl = this;
var changed = false;
$('form').each(function() {
if (this != formEl && $(this).data('initialForm') != $(this).serialize()) {
changed = true;
$(this).addClass('changed');
} else {
$(this).removeClass('changed');
}
});
if (changed && !confirm('Another form on this page has been changed. Are you sure you want to continue with this form submission?')) {
e.preventDefault();
} else {
$(window).unbind('beforeunload', catcher);
}
});
$(window).bind('beforeunload', catcher);
});
さて...このコードは複数のフォームを処理し...ページを離れるすべての方法を巧みに認識し、保存されていないデータがある可能性があることを警告します。
私はコードと格闘しましたが、それは私を超えています。
私がやろうとしていることは
a)ページのアンロードを待つのではなく、一部のデータが変更されたときにイベントをトリガーし、divに「データ変更」を入力します。
b) スクリプトの機能を 1 つの形式に減らす可能性があります。
どんな助け、アドバイス、またはアイデアもありがたく受け入れます。
意思