【发布时间】:2014-04-23 12:49:06
【问题描述】:
我有一个带有下拉菜单的网格视图,每当在网格下拉菜单中进行更改并且用户导航到另一个页面而不单击保存按钮时,我都会在下面的 JS 中显示一条警报。如果用户单击“确定”,则允许您导航到另一个页面,并且此方案运行良好。
问题部分:
如果用户在显示的警报中单击取消,它将不允许导航到另一个页面并且将保持在同一页面中。现在,如果我在没有点击保存的情况下导航到另一个页面,则不会出现警报,第二次我无法在取消操作时发出警报。
保存按钮:
<asp:Button ID="btnSave" runat="server" OnClick="Save_Click" Text="Save"
CssClass="button" OnClientClick="MySuperDuper.globalChange = false;" />
网格下拉菜单:
<asp:TemplateField HeaderText="Product">
<ItemTemplate>
<asp:DropDownList ID="ddlProduct" runat="server" Enabled="True"
DataTextField="Prod" DataValueField="Prod" OnSelectedIndexChanged="ddlProduct_Change"
onchange="MySuperDuper.globalChange = true;">
</asp:DropDownList>
</asp:TemplateField>
Javascript:
<script type="text/javascript">
var MySuperDuper = new function () {
var _this = this;
this.saving;
this.navigateAwayMessage = "You have made some changes which" +
" will be lost if you leave this page. " +
"Do you want to leave this page?";
this.checkForChanges = function () {
if (!_this.saving && typeof (_this.globalChange) !=
"undefined" && _this.globalChange) {
if (document.all && event) {
MySuperDuper.globalChange = false;
event.returnValue = _this.navigateAwayMessage;
}
else {
MySuperDuper.globalChange = false;
return _this.navigateAwayMessage;
}
}
}
}
window.onbeforeunload = function () {
return MySuperDuper.checkForChanges();
}
</script>
【问题讨论】:
标签: c# javascript jquery asp.net .net