Volomike の優れた jQuery コードを少し拡張したいと考えていました。
したがって、これにより、保存する前に更新されたデータから離れて移動することによる不注意なデータ損失を防ぐという目的を達成するための非常にクールでエレガントなメカニズムがあります。ページのフィールドを更新してから、[保存] ボタンをクリックする前に、ブラウザのボタン、リンク、または [戻る] ボタンをクリックします。
必要な作業は、更新されたデータを保存するか削除しないかのいずれかで、Web サイトにポストバックするすべてのコントロール (特に [保存] ボタン) に「noWarn」クラス タグを追加することだけです。
コントロールが原因でページのデータが失われた場合。次のページに移動するか、データを消去します。スクリプトによって警告メッセージが自動的に表示されるため、何もする必要はありません。
素晴らしい!よくやったボロミケ!
jQuery コードを次のように記述します。
$(document).ready(function() {
//----------------------------------------------------------------------
// Don't allow us to navigate away from a page on which we're changed
// values on any control without a warning message. Need to class our
// save buttons, links, etc so they can do a save without the message -
// ie. CssClass="noWarn"
//----------------------------------------------------------------------
$('input:text,input:checkbox,input:radio,textarea,select').one('change', function() {
$('BODY').attr('onbeforeunload',
"return 'Leaving this page will cause any unsaved data to be lost.';");
});
$('.noWarn').click(function() { $('BODY').removeAttr('onbeforeunload'); });
});