我正在为我的项目使用Telerik控件。在我的页面上,有一些指向另一个页面的链接,几个radtextbox和一个radbutton(它会导致回发)。更改文本框值后,该按钮将变为启用状态。然后,在我的window.onbeforeunload
中,检查按钮是启用还是禁用。如果已启用,则会出现确认对话框。代码如下所示:
window.onbeforeunload = function (evt) {
var ClientGeneral_btnSave = $find('<%=btnSave.ClientID %>');
if (ClientGeneral_btnSave.get_enabled() == true) {
var message = 'You will lose unsaved data?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
此代码效果很好。当我关闭选项卡时,会出现确认对话框。当我点击链接时,确实如此。但是,当我点击btnSave本身时,对话框也会出现,这是不正常的。我希望btnSave不会导致onbeforeunload
事件
请告诉我怎么做。
提前谢谢
答案 0 :(得分:0)
如果btnSave回复它看起来好像是它,它会触发onbeforeunload。因此,您有几个选择
如果您不需要,请阻止btnSave回发。最简单的方法是将此属性放在asp:Button标记
中OnClientClick =“return false”
连接javaScript / jQuery方法以禁用onbeforeunload事件。之前我通过在隐藏字段中存储一个值并使用它来表示onbeforeunload事件应该触发来执行此操作。
$('#<%= btnSave.ClientID %>').bind('click', function(e){
$('#myHiddenFieldId').val('1');
});
并更改你的on beforeload handler以检查隐藏字段是否不等于1(默认值为0,即
window.onbeforeunload = function (evt) {
if( $('#myHiddenFieldId').val() != '1')
{
//your logic here
}
}
你可以通过使用JQuery解除btnSave点击事件中的onbeforeunload处理程序而不是使用隐藏字段来覆盖来做更好的事情。
选项2可能会变得很繁琐 - 祝你好运