请参阅以下代码示例。
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: //form 默认不改变 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;
});
一般,
用户在文本框中键入但未保存。然后他正试图重定向到其他页面或重新加载页面,Bowser 给他带来了一个确认框。
但,
我首先在文本框中输入,然后单击用于上传文件但不保存(不影响更改)表单的“上传按钮”(并将未保存的文本保留在文本框中)回发)。Bowser 给我带来了不需要的确认框。
我尝试修复它并添加类似的东西,
var button_inside_form =0;
$('Upload').live('click',function(){
button_inside_form =1;
});
//and update form change logic in onbeforeunload
但是,页面回帖后。它重新加载 JavaScript,form_Change
重置为 0。因此系统不知道表单是否已更改。
那么如何检查点击“上传”后表单是否更改,并且点击“上传”时不带回确认框。