0

请参阅以下代码示例。

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。因此系统不知道表单是否已更改。

那么如何检查点击“上传”后表单是否更改,并且点击“上传”时不带回确认框。

4

1 回答 1

0

自己回答。

我用饼干。这就是var form_changeJavaScript 中的 cookie。

然后在服务器代码中,不是 IsPostBack,我添加它来重置 cookie。

ClientScript.RegisterClientScriptBlock(Me.GetType, "IsPostBack", "var isPostBack = true;", True)

去检查

if (typeof isPostBack != 'undefined') {
    resetFormChange();}

使用它来防止提交按钮上的确认框

$('form').submit(function() {
    window.onbeforeunload = null;
});

多思考。如果表单提交将保留在同一页面中,则需要 cookie。form.submit 可以正常工作,但需要确保需要在“取消”按钮上设置“UseSubmitBehaviors”。或者如果导致页面停留,最好将它们放在更新面板中。

于 2012-05-02T13:05:37.133 回答