ページを変更して保存せずに移動しようとすると、変更内容を保存するかどうかを尋ねるエラーメッセージが表示されます。ページ内の何かが変更されたことを確認する方法は?
答えて
onbeforeunload
イベントは必要なものです。 ユーザーがナビゲートしようとするとき(バック、フォワード、リンク上をクリック、タブまたはウィンドウ自体を閉じる)に移動するたびに、string
を返す機能をバインドします(Chromeの場合のみ、他のブラウザはデフォルトメッセージを表示します)。ページ。
ユーザーに確認ダイアログが表示され、ユーザーが続行を選択すると、要求した操作が実行されます。彼がページにとどまることを選択した場合、何も起こりません。変更が簡単に保存されている
$('input').change(function(){
window.onbeforeunload = function(){
//Return the message that should be displayed in Chrome.
// Other browsers will show default message.
return "You have unsaved changes on this page";
};
});
は、ユーザーがページから移動しようとすると、メッセージを削除するためにwindow.onbeforeunload = null
を設定します。
いくつか検討する必要があります。
入力にはどの要素を使用しますか。これはelementSelector(下のコードで使用されています)に影響します jeditableなどのプラグインを使用する場合、入力に使用する要素以上のことを知る必要があります。値を表示するために使用される要素も知っている必要があります。
あなたが変更にバインドすると、sudhirsの回答のように、自動的にインプレース編集をサポートするようにバインドの代わりにライブでこれを行うことをおすすめします。
変更イベントでフラグを設定するフラグの解決方法では、ユーザーが値を元の値に戻す場合は対象となりません。
以下のコードの考え方は、監視して元の値を保存するすべての要素を反復することです。値がアンロードされると、変化が検出された場合に警告が与えられるべきであるかどうかが比較される。ユーザーが保存した後のページに留まる場合
$(function(){
function getVal(){
var val,node = $(this),nodeType = node.attr('type');
if(this.nodeName.toLowerCase() == input){
if(nodeType === "checkbox" || nodeType === "radio"){
val = node.attr('checked');
} else{
val = node.val();
}
} else{
val = node.text();
}
return val;
}
$(elementSelector).each(function)({
$(this).data('original',getVal.Call(this));
});
window.onbeforeunload = function(){
var hasChanges;
$(elementSelector).each(function(){
var org = $(this).data('original'),val = getVal.call(this);
hasChanges = hasChanges || (org !== val)
});
if(hasChanges){
return "Are you sure you wish to leave this page. Changes will be lost");
}
};
});
(IEを。データは、AJAXを使用してサーバに送信されます)以降の変更が正しく再びメッセージをトリッカーズが、何のメッセージはありませんように、あなたは店の値を更新する必要がありますユーザーが保存した後に何も変更しない場合はトリックします
- 1. UserControlコレクションプロパティがデザイン時に変更されたことを確認する方法?
- 2. IListが変更されたことを確認しますか?
- 3. プロパティが変更されたことを確認しました
- 4. * .aspxページが変更されたかどうかを確認するには
- 5. ページが更新されたかどうかを確認する
- 6. jQuery:divがスクロールダウンされたことを確認する方法
- 7. EditTextが変更されたかどうかを確認する方法?
- 8. システムクロックが変更されたかどうかを確認する方法?
- 9. どのトグルスイッチが変更されたかを確認する方法
- 10. Git stash:ブランチ内に隠された変更があるかどうかを確認する方法
- 11. サーバーのページが変更されているかどうかを確認する
- 12. JavaでWebページのリロードボタンが押されたときを確認する方法
- 13. 変数が変更されたときの確認
- 14. 別のクラスの変数が更新されていることを確認する方法は?
- 15. 文書にページがないことを確認する方法
- 16. 例外がスローされたことをQTestで確認する方法は?
- 17. データベースのテーブルが更新されたかどうかを確認する方法?
- 18. パスワードが最後に変更されたことを確認します。
- 19. コールのコンテンツプロバイダーが変更されたことを知る方法
- 20. フォームデータが変更されたかどうかの確認
- 21. gitにコミットする前に、ファイル内で何が変更されたかを確認する方法はありますか?
- 22. LINQ to SQLレコードが変更されたかどうかを確認する方法がありますか?
- 23. クライアントのJavascriptが変更されていないことを確認する方法
- 24. Rhino Mocks:コンストラクタが呼び出されたことを確認する方法
- 25. TFieldが手作業で変更されていることを確認する方法
- 26. Python ftplib:ファイルが変更されたかどうかを確認する最も良い方法は?
- 27. gridviewのチェックボックスのイベントをクリックし、それが確認されたかどうかを確認する方法は?
- 28. javascriptバッジ/ウィジェットhtmlが変更されていないことを確認する
- 29. ラジオボタンが変更されたイベントの変更を2回確認しました
- 30. 日付を確認するWebページが更新されましたか?
これは役に立ちます。これを確認してください:http://stackoverflow.com/questions/1235024/asp-net-jquery-dirty-forms-and-window-onbeforeunload – TRR
@ rutwick-それは何よりも良いかもしれないが、クリックリスナーを* beforeunload * listenerを持ち、フォームコントロールの現在の*値*と* defaultValue *をテストし、フォームが送信されるときにリスナーを削除して不要なときに呼び出されないようにする方がはるかに良いでしょう。 – RobG