首页 文章

jQuery UI对话框OnBeforeUnload

提问于
浏览
64

我有一个小问题 . 我试图 grab 窗口的OnUnLoad事件并询问确认问题,如果用户决定他们想要保持那么好,如果他们想离开页面,那么他们将丢失所有未保存的数据 . 这是问题......

我正在使用jQuery UI对话框,当我在页面上放置以下代码时,我打开了Dialog,当我单击浏览器上的后退按钮时,它永远不会弹出msgbox . 它只刷新页面:

<script type="text/javascript"> 
    $(window).bind('beforeunload', function() { 
            alert('you are an idiot!'); 
        } 
    );
</script>

而我正在使用的解决方案是一个帖子here . 再次,如果我没有打开jQuery UI对话框,msgbox将显示正常 . 如果我这样做,那么它不会显示msgbox并只刷新页面 .

有任何想法吗?

6 回答

  • 0

    显示警报的正确方法是简单地返回一个字符串 . 不要自己调用 alert() 方法 .

    <script type="text/javascript">
        $(window).on('beforeunload', function() {
            if (iWantTo) {
                return 'you are an idiot!';
            }
        }); 
    </script>
    

    另见:https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

  • 1

    您也可以通过提交特定表单来离开页面例外:

    $(window).bind('beforeunload', function(){
        return "Do you really want to leave now?";
    });
    
    $("#form_id").submit(function(){
        $(window).unbind("beforeunload");
    });
    
  • 111

    这对我有用

    $(window).bind('beforeunload', function() {
          return 'Do you really want to leave?' ;
    });
    
  • 1

    jQuery API明确表示不要绑定到beforeunload,而应该直接绑定到window.onbeforeunload,我只是遇到了一个非常糟糕的内存,部分原因是绑定到了使用jQuery的beforeunload .

  • 43

    这对我有用:

    window.addEventListener("beforeunload", function(event) {
      event.returnValue = "You may have unsaved Data";
    });
    
  • 14

    对于ASP.NET MVC,如果您想通过提交特定表单来离开页面例外:

    设置表单ID:

    @using (Html.BeginForm("Create", "MgtJob", FormMethod.Post, new { id = "createjob" }))
    {
      // Your code
    }
    
    
    
    <script type="text/javascript">
    
      // Without submit form
       $(window).bind('beforeunload', function () {
            if ($('input').val() !== '') {
                return "It looks like you have input you haven't submitted."
            }
        });
    
        // this will call before submit; and it will unbind beforeunload
        $(function () {
            $("#createjob").submit(function (event) {
                $(window).unbind("beforeunload");
            });
        });
    
    </script>
    

相关问题