jQuery: focusout to exclude some elements

3.3k views Asked by At

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...

3

There are 3 answers

0
Anton On BEST ANSWER

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

1
P R On

You can use "blur" - event.

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

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

});