私が達成しようとしているのは、ユーザーがページを閉じようとしたり、最初に保存せずにページから移動しようとした場合に、保存されていない変更をユーザーに警告することです。
ダイアログをポップアップさせることができましOnBeforeUnload()
た...しかし、ユーザーがフィールド値を変更していない場合は、ダイアログをまったく表示したくありません。このために、デフォルト値のfalseで始まり、フィールドが編集されるとtrueに変わる is_modifiedという隠し入力フィールドを使用しています。
変更イベントをこの is_modified フィールドにバインドして、値の変更を検出しようとしました...そして、OnBeforeUnload を有効にしました。
$( '#is_modified' ).change( function() {
if( $( '#is_modified' ).val() == 'true' )
window.onbeforeunload = function() { return "You have unsaved changes."; }
});
しかし、私が理解していることから、change()
イベントはこれらの 3 つのステップの後にのみ機能するということです。フィールドがフォーカスを受け取り、値が変更され、フィールドがフォーカスを失います。非表示の入力フィールドの場合、このフォーカスの受け渡し部分がどのように機能するのかわかりません! したがって、onbeforeunload 関数がアクティブになることはありません。
is_modified でトリガーを維持する方法を提案できる人はいますか?
ありがとう。