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之一中收到一个未指定的错误。
我认为发生的事情是在window.onbeforeunload函数之前触发了OnCilck事件。如何确保OnClick事件仅在用户单击“确定”继续时触发,而不是在单击“取消”以保持在此页面上时触发?
答案 0 :(得分:0)
从“取消”按钮中删除OnClick方法,并将其替换为OnClieckClick并调用unsavedData()函数。
如果您想使用OnClick以及OnClientClick,请参阅此帖子以获取解决方案:OnclientClick and OnClick is not working at the same time?