0

aspx:

<script type="text/javascript">
    window.onbeforeunload = function (e) {
        if (unsavedData()) {
            return "Exit page?";
        }
    }

    function unsavedData() {
        //logic for unsaved data here
        //let's just return true for this example
        return true;
    }
</script>

<asp:UpdatePanel ID="updatePnlContent" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" />
            <%-- triggers for other buttons  --%>
        </Triggers>
        <ContentTemplate>
            <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click"/>
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click"/>
            <%-- Other fields and buttons  --%>
        </ContentTemplate>
    </ContentTemplate>
</asp:UpdatePanel>

后面的代码

protected void btnSave_Click(object sender, EventArgs e)
{
    //save data
}

protected void btnCancel_Click(object sender, EventArgs e)
{
    Response.Redirect("Default.aspx");
}

如果我单击“取消”按钮并且有未保存的数据,则会提示单击“确定”继续或单击“取消”以留在此页面上,如预期的那样。但是,当我按取消停留在此页面上时,我在 Microsoft AJAX javascript 之一中收到未指定的错误。

我认为发生的是 OnCilck 事件在 window.onbeforeunload 函数之前触发。如何确保 OnClick 事件仅在用户单击“确定”继续时才触发,而不是在单击“取消”以留在此页面时触发?

4

1 回答 1

0

从 Cancel 按钮中移除 OnClick 方法并将其替换为 OnClieckClick 并调用 unsavedData() 函数。

如果您想同时使用 OnClick 和 OnClientClick,请参阅此帖子以获取解决方案:OnclientClick 和 OnClick 不能同时工作?

于 2013-02-07T21:40:57.667 回答