【问题标题】:Exit confirmation in Javascript with Telerik controls使用 Telerik 控件在 Javascript 中退出确认
【发布时间】:2012-01-23 20:45:18
【问题描述】:

我正在为我的项目使用 Telerik 控件。在我的页面上,有一些指向另一个页面的链接、几个 radtextboxes 和一个 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 事件

请告诉我该怎么做。

提前谢谢你

【问题讨论】:

    标签: javascript asp.net telerik onbeforeunload confirm


    【解决方案1】:

    如果 btnSave 发回它看起来好像是的,它会在 onbeforeunload 上触发。因此,您有几个选择

    1. 如果您不需要,请阻止 btnSave 回发。最简单的方法是将此属性放在 asp:Button 标记中

      OnClientClick="return false"

    2. 连接一个 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 点击事件中的 onbeforeunload 处理程序,而不是使用隐藏字段进行覆盖。

    选项 2 可能会变得很复杂 - 祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多