【问题标题】:jQuery: focusout to exclude some elementsjQuery:focusout 排除某些元素
【发布时间】:2014-01-13 10:35:41
【问题描述】:

每次特定输入失去焦点时,都会触发输入字段的焦点输出。 但是,我想排除一些特定的标签来触发该 focusout 功能

例子:

<input type="text" id="name_input">
<a id="apply_name">SAVE</a>

然后是focusout函数:

$("#name_input").focusout(function(e) {
  //do something here
});

单击“#apply_name”也会触发输入的聚焦功能。如何排除该特定元素 ID 来触发它。 注意:我尝试了一些已经在 StackOverflow 上发布的技巧,但没有一个可以正常工作......

【问题讨论】:

  • 为什么不在你的回调中做这个过滤呢?
  • 据我所知,没有直接的解决方案,因为焦点将在点击事件之前触发...尝试上述技巧
  • @ArunPJohny 好的,你现在把问题说得更清楚了;)
  • @A.Wolff 在 OP 澄清这是否是他正在研究的问题之前,我仍然怀疑它是否必须是一个答案

标签: javascript jquery jquery-focusout


【解决方案1】:

另一种方法是检查您的目标 id 是什么

var evt;
document.onmousemove = function (e) {
    e = e || window.event;
    evt = e;
}
$("#name_input").focusout(function (e) {
    if (evt.target.id == "apply_name") {
        //apply_name clicked
    } else {
        //focus out and applyname not clicked
    }
});

DEMO

【讨论】:

    【解决方案2】:

    您可以使用“模糊” - 事件。​​

    $("#name_input").on("blur", function(e) {
        //your code
    });
    

    【讨论】:

    • 模糊不会冒泡,但看起来很奇怪,这可能是问题,因为 INPUT 不能包含任何元素
    【解决方案3】:

    来自How to exclude Id from focusout的解决方案 添加了我也需要的 .hasClass:

    $('#id').focusout (function (e) {
    
        if (e.relatedTarget && $(e.relatedTarget).hasClass('dontFocusOut')) {
            return;
        }
        //do your thing
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 2011-08-30
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多