jQuery:focusout排除一些元素

时间:2014-01-13 10:35:42

标签: javascript jquery jquery-focusout

每次特定输入失去焦点时,

输入字段的焦点将触发。 但是,我想从触发焦点输出功能

中排除某些特定标签

示例:

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

然后是焦点输出功能:

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

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

3 个答案:

答案 0 :(得分:2)

另一种方法是检查目标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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

$('#id').focusout (function (e) {

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

});