سؤال

focusout on input field will trigger every time the specific input looses its focus. But, I want to exclude some specific a tag from triggering that focusout function

Example:

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

Then the focusout function:

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

Clicking on "#apply_name" also triggers focusout function of an input. How can I exclude that specific element ID from triggering it. Note: I tried some tricks already posted on StackOverflow and none of them seams to work...

هل كانت مفيدة؟

المحلول

Another way of doing this is checking what your target id is

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

نصائح أخرى

You can use "blur" - event.

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

Solution from How to exclude Id from focusout Added .hasClass which I also needed:

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

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

});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top