【问题标题】:Is there a way to prevent an element from losing focus in JavaScript/jQuery?有没有办法防止元素在 JavaScript/jQuery 中失去焦点?
【发布时间】:2013-02-09 07:47:26
【问题描述】:

focusout/blur 事件仅在元素失去焦点后触发... 顺便说一句,我更喜欢不使用插件。

【问题讨论】:

  • 在 blur 事件上,再次将焦点设置在元素上。
  • jQuery 是一个插件...
  • 这似乎是对用户怀有敌意的做法。你想要完成或阻止什么?

标签: javascript jquery dom-events


【解决方案1】:

是的。你可以使用这个:

<input type="text" onblur="this.focus();" />

或者在 jQuery 中:

$(element).blur(function(){
    $(this).focus();
});

【讨论】:

    【解决方案2】:

    是的。

    当你点击一个可聚焦的 DOM 元素(默认是可聚焦的,或者通过添加tabIndex 属性使其成为可聚焦的),那么它首先会收到一个"focus" 事件,让你知道它即将收到重点。

    然而,在此之前,任何拥有焦点的东西都会收到FocusEvent 类型的"focusout" 事件。假设您的事件变量是e。 e.relatedTarget 属性将填充即将获得焦点的元素。如果您通过将焦点设置回失去焦点的事物 e.target 来处理 "focusout" 事件,那么它将立即重新接收焦点,以及 "focus" 和 "focusin" 事件,而对象将接收焦点将不会接收焦点或任何焦点事件。

    因此,处理"focusout" 事件是防止对象失去焦点的最佳方法。从技术上讲,因为事件不是cancelable,所以你不能阻止它失去焦点,但是你可以强制它立即重新接收焦点,从而防止焦点转移到另一个元素。

    同时,如果您的意图是阻止一个对象接收焦点,那么最好的办法是通过在元素上调用blur 来处理其"focus" 事件,所以它永远不会收到焦点,也不会收到"focusin" 事件。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      相关资源
      最近更新 更多