次のコード例を参照してください。
HTML:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:FileUpload ID="FileUpload1" runat="server" />
<!-- upload button and Save button -->
<asp:Button ID="Upload" runat="server" Text="Upload" />
<asp:Button ID="Save" runat="server" Text="Save" />
<a href="otherpage.aspx">Cancel</a>
JavaScript: //デフォルトではフォームは変更されません var form_Change = 0;
window.onbeforeunload = function(e) {
if (form_Change==1){
// if the form is changed, show a confirm box
return 'Are you sure you want to navigate away from this page?';
}
}
$('input[type=text]').live('keyup',function(){
form_Change =1;
});
通常は、
ユーザーがテキストボックスを保存せずに入力しました。次に、他のページにリダイレクトするか、ページをリロードしようとすると、クッパが確認ボックスを表示します。
しかし、
最初にテキストボックスに入力してから、ファイルをアップロードするために使用される「アップロードボタン」をクリックしますが、フォームを保存しません (変更には影響しません) (保存されていないテキストをそのままテキストボックスに保持します)ポストバック)。クッパが不要な確認ボックスを持ってきました。
私はそれを修正して、次のようなものを追加しようとします。
var button_inside_form =0;
$('Upload').live('click',function(){
button_inside_form =1;
});
//and update form change logic in onbeforeunload
しかし、ページのポストバックの後。JavaScript をリロードform_Change
し、0 にリセットされます。そのため、システムはフォームが変更されたかどうかを知りません。
では、「アップロード」をクリックした後にフォームが変更されたことを確認し、「アップロード」をクリックしたときに確認ボックスを戻さないようにするにはどうすればよいですか。