【问题标题】:How to "catch" and on unload event when doing an onblur进行 onblur 时如何“捕捉”和卸载事件
【发布时间】:2013-10-08 08:14:38
【问题描述】:

我有一个应用程序,当用户输入一个字段时,它会在他们输入的字段上执行 AJAX 验证。这是使用字段上的onblur 触发器触发的。但是,我希望能够在用户实际离开页面时停止触发。

我的输入字段看起来像

<input type="text" onblur="checkIt(this.value);" id="name" />

其中 checkIt 函数只是调用 AJAX 进程来验证输入。如果输入无效,则返回错误,该错误显示在页面上的 DIV 中。这一切都很好,除了如果用户改变主意并决定离开页面,在他们离开之前仍然会显示错误 div。

所以在我的 checkIt 函数中,我想知道如何说,

如果event = unload 页面则不显示错误并允许用户导航离开。

我正在使用 Oracle APEX,所以可以使用 javascriptJQuery 来执行此操作

有什么想法吗?

【问题讨论】:

    标签: javascript jquery html ajax


    【解决方案1】:

    focusoutblur 没有做我想要的 - 在页面卸载之前触发焦点元素的模糊事件

    使用这个(工作)代码:

    window.onbeforeunload = function(e){
      $(document.activeElement).blur();
    }
    

    【讨论】:

      【解决方案2】:

      尝试 jquery focusout 事件:检查此Documentation

      <input id="test" type="text"><br>
      
      <script>
              $(document).ready(function(){    
              $( "#test" ).focusout(function() {
                 alert("Focus out");
              }).blur(function() {    
                  alert("Blur Event");
                });
              });
      </script>
      

      【讨论】:

      • 但肯定会因为 onunload 事件而触发,这是我需要停止的,除非我遗漏了什么。为了清楚起见,如果他们想离开页面,请让他们不要触发 onblur/focusout,如果他们点击页面上的其他位置,即没有离开页面,则触发 onblur/focusout
      • 如果我尝试捕获这两个事件,它会先触发 on blur 事件,然后触发 onunload 事件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多