【问题标题】:jQuery input click event before onbeforeunload?onbeforeunload之前的jQuery输入点击事件?
【发布时间】:2011-07-13 02:13:53
【问题描述】:

我希望我的 onbeforeunload 事件处理程序中的业务逻辑仅在单击指定元素时发生。

我有以下代码(简化):

var myButtonClicked = false;

$(document).ready(function() {
  window.onbeforeunload = myEventHandler;
  $("#myButton").click(function() {
    myButtonClicked = true;

    $("#myform").submit();
  });
});

function myEventHandler(event)
{
  if (myButtonClicked)
  {
    // Do checking.
    // return "Dirty flag..blahblah";
  }
}

目前这正在产生非常奇怪的行为 - 第一次单击我的按钮时,单击事件在 myEventHandler 之后处理。第二次点击是事先处理好的(这是FF4.0)。

非常感谢您对这项工作的任何帮助。

编辑:已修复。 :)

基本上我有两个点击事件;

myButton.click(function() {
  ...
  ignoreFlag = true;
});

myButton.click(function() {
  form.submit();
});

关于首先触发哪个事件始终是一场竞赛。我将两者合并,它似乎工作正常。

感谢您的帮助 ysrb :)

【问题讨论】:

  • 你试过把return false;吗? $("#myButton").click(function() { myButtonClicked = true; return false; });我猜它正在发回。
  • @ysrb - 我希望它提交并执行回发(这将调用 onbeforeunload 方法 - 我已经更新了代码以澄清一点。
  • 为什么要使用onbeforeunload?为什么你不能只用点击处理程序做你想做的事?
  • 是的,同意 gilly3。您可以在 click 函数中进行检查。
  • 啊——如果它能够满足我的要求,我会喜欢这个解决方案。但是,我在 SharePoint 中有一个自定义应用程序。我需要检查是否点击了页面上的任何链接,而不仅仅是我的点击处理程序。

标签: jquery click onbeforeunload


【解决方案1】:

这应该会有所帮助.. 它会忽略表单提交

$(document).ready(function () {
var warn_on_unload = "";
$('input:text,textarea').on('change', function () {
    warn_on_unload = "Leaving this page will cause any unsaved data to be lost.";
    $("form").submit(function () {
        warn_on_unload = "";
    });
    window.onbeforeunload = function () {
        if (warn_on_unload != '') {
            return warn_on_unload;
        }
    }
});

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2013-03-24
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多