jQuery: фокус, чтобы исключить некоторые элементы

Фокусировка на поле ввода будет срабатывать каждый раз, когда конкретный вход теряет фокус. Но я хочу исключить некоторые конкретные теги из запуска этой функции фокуса

Пример:

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

Тогда функция фокусировки:

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

Нажатие на "#apply_name" также запускает функцию фокусировки входа. Как я могу исключить этот конкретный идентификатор элемента из его запуска. Примечание. Я попробовал некоторые приемы, уже опубликованные в Stackru, и ни один из них не сработал...

3 ответа

Решение

Еще один способ сделать это проверить, каков ваш целевой идентификатор

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

Решение от Как исключить Id из focusout Добавлен.hasClass, который мне также был нужен:

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

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

});

Вы можете использовать "размытие" - событие.

$("#name_input").on("blur", function(e) {
    //your code
});
Другие вопросы по тегам