2013-06-28 5 views
1

С помощью JQuery фокусное расстояние вызывается только тогда, когда вы нажимаете в любом месте из сфокусированной области, когда задано «focusout».Как исключить идентификатор из фокуса

Как исключить некоторые идентификаторы от активации функции «focusout». ?

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

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

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

+0

Вы имеете в виду новый идентификатор вы нажав на или идентификатор вы уезжаете? – Barmar

+0

Можете вы добавить код? –

+0

Любой идентификатор, который будет нажат, который не является инициатором события «on focus». Я не думаю, что код просветит вас @Tim, вместо этого он добавит больше тумана, давайте просто использовать термины непрофессионала, «английский». –

ответ

0

Вы можете unbindfocusout при нажатии на 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; 
} 
+0

Хорошо, легко и прямо. Благодарю. –

+0

Lol, так что это не отвязывает только div, а просто полностью уничтожает эту функцию, из несвязанного Id вы не можете щелкнуть в другом месте и продолжить фокусировку. –

+0

Правильно, как я уже упоминал, вам нужно будет переустановить в какой-то момент вашего кода. Не зная приложения, трудно сказать, когда нужно переустановить, но это должно дать вам хорошее начало для решения. –

1

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

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

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

}); 
+0

Я бы тоже хотел попробовать это, так как unbind просто убивает функцию таким образом, что после нажатия на unbinded div «focusout» просто умирает. , но эта связанная цель не выполняется. –

+0

Что вы подразумеваете под "не работает"? Обратите внимание, что 'event.relatedTarget' может быть пустым, если ваша связанная с вами цель не является частью вашего документа. В любом другом случае это должен быть элемент, получающий фокус. –

+0

ОК классно, вы можете это понять? –

 Смежные вопросы

  • Нет связанных вопросов^_^