Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:focusout以排除某些元素_Javascript_Jquery_Jquery Focusout - Fatal编程技术网

Javascript jQuery:focusout以排除某些元素

Javascript jQuery:focusout以排除某些元素,javascript,jquery,jquery-focusout,Javascript,Jquery,Jquery Focusout,每次特定输入失去焦点时,输入字段上的focusout将触发。 但是,我想从触发focusout函数中排除一些特定的标记 例如: <input type="text" id="name_input"> <a id="apply_name">SAVE</a> 单击“#应用_名称”也会触发输入的focusout函数。如何排除触发该元素的特定元素ID。 注意:我尝试了一些已经发布在StackOverflow上的技巧,但没有一个有效…您可以使用“模糊”-事件 另一种方

每次特定输入失去焦点时,输入字段上的focusout将触发。 但是,我想从触发focusout函数中排除一些特定的标记

例如:

<input type="text" id="name_input">
<a id="apply_name">SAVE</a>
单击“#应用_名称”也会触发输入的focusout函数。如何排除触发该元素的特定元素ID。 注意:我尝试了一些已经发布在StackOverflow上的技巧,但没有一个有效…

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


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

来自的解决方案 添加了我还需要的.hasClass:

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

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

});

为什么不在回调中执行此过滤?请尝试类似的操作,据我所知,没有直接的解决方案,因为focusout将在单击事件之前触发。。。试试上面的方法hack@ArunPJohny哈,好吧,你现在把问题弄清楚了;)@A.Wolff我仍然怀疑它是否必须是一个答案,直到OP澄清这是否是他所关注的问题,Blur没有冒泡,但似乎很奇怪,这可能是一个问题,因为输入不能包含任何元素
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
    }
});
$('#id').focusout (function (e) {

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

});