Как исключить идентификатор из фокуса

В Jquery focusout вызывается, когда вы щелкаете в любом месте вне области фокусировки, когда установлен "focusout".

Как исключить некоторые идентификаторы из активации функции "Фокусировка".?

например здесь.

У вас есть поле ввода текста (id="A"), которое скрывает некоторый div по фокусу и показывает тот самый div, когда он не в фокусе, но теперь он, очевидно, будет показывать div, когда вы щелкаете в любом месте этого ("#A ") поле ввода.

Вопрос в том, как установить какой-либо идентификатор (может быть, поле выбора (Id="B" рядом с ним), чтобы не запускать функцию "focusout". Надеюсь, это имеет смысл.

2 ответа

Попробуйте использовать relatedTarget свойство события:

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

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

});

Вы можете unbind focusout когда вы нажимаете на div. Это может вернуть некоторые ожидаемые результаты, и в какой-то момент в вашем коде вы, вероятно, захотите перепривязать его. Смотрите здесь для примера: http://jsfiddle.net/hdCFA/

$("input").on("focus", function() {
    $(".hidden").show();
});
$("input").on("focusout",function() {
    $(".hidden").hide();
});

$(".clickable").on("mousedown", function() { 
    $("input").unbind("focusout"); 
});

HTML:

<input />
<div class="hidden">Hidden div</div>
<div class="clickable">Click me</div>

CSS:

.clickable { background:blue; }
.hidden {
    display:none;
}
Другие вопросы по тегам