我正在为项目使用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
事件请告诉我该怎么做。
先感谢您
最佳答案
如果btnSave回传看起来像是这样,它将在onbeforeunload上触发。因此,您有两种选择
如果不需要,请阻止btnSave回发。最简单的方法是将此属性放在asp:Button标记中
OnClientClick =“返回假”
连接javaScript / jQuery方法以禁用onbeforeunload事件。我之前通过在隐藏字段中存储一个值并使用此信号表示应触发onbeforeunload事件来完成此操作。
例如
$('#<%= btnSave.ClientID %>').bind('click', function(e){
$('#myHiddenFieldId').val('1');
});
并更改您的on beforeunload处理程序,以检查隐藏字段不等于1(将0设置为默认值,即
window.onbeforeunload = function (evt) {
if( $('#myHiddenFieldId').val() != '1')
{
//your logic here
}
}
通过使用JQuery而不是使用隐藏字段覆盖btnSave click事件中的onbeforeunload处理程序,您可能会做得更好。
选项2可以变的很好-祝您好运