フォームを動的に生成し、コードを制御できないエンタープライズアプリケーションで作業しています。フォーム内のコントロールのほとんどは、彼らにonbeforeunload - 選択的イベントへのバインド
<select name="s_10_1_1_0" onchange = 'SWESubmitForm(document.SWEForm10_0,s_5,"","1-E0RHB7")' id='s_10_1_1_0' tabindex=1997 >
<input type="text" name='s_10_1_11_0' value='' onchange = 'SWESubmitForm(document.SWEForm10_0,s_7,"","1-E0RHB7")' id='s_10_1_11_0' tabindex=1997 maxlength="30">
を関連するコードを以下している私たちは、ユーザは、ヘッダーやフッターにリンクを使用して、いくつかの他のページに移動しようとすると、ダイアログをキャンセルし、[OK]を提示したいと思います。
私はonbeforeunloadイベントをバインドし、ok cancelダイアログをユーザに提示するために次のコードを使用しました。
//this identifies the unique page name
var viewName = $('input[name="SWEView"]').val();
// if I am on desired page bind the event so that now dialog is presented to user
if(viewName == "XRX eCustomer Create Service Request View"){
$(window).bind('beforeunload', function(){
return 'Your Inquiry has not been submitted yet.';
});
}
しかし、問題は、このダイアログが毎回ユーザが(私はそれがのonchangeイベントのSWESubmitFormコード存在によるものであると考えている)形式で任意のフィールドの値を変更するということです。
ユーザーがフォーム外の他のリンクをクリックすると、つまり、ページ上で選択的なイベント(ウィンドウを閉じるなど)をonbeforeunloadにすると、onbeforeunloadダイアログが表示されます。