jQuery размытие с исключением

Я установил событие фокуса на элементе ввода. Когда есть фокус, jQuery ищет div и отображает его. Это работает. С событием размытия на том же элементе ввода я скрываю div, что также работает. Но когда я нажимаю на ссылку или хочу выделить текст в показанном div, он сразу же исчезает из-за события размытия. Как я могу сделать исключение для показанного div?

$("input.search-main-text").focus(function() {
    $("div.quickResults").show();
});

$("input.search-main-text").blur(function() {
    $("div.quickResults").hide();
});

person pgarama    schedule 19.11.2009    source источник


Ответы (2)


Вы можете попробовать сделать что-то вроде:

  1. Привязать обработчик события для фокуса
  2. В фокусе привяжите обработчик события для размытия + обработчик события для mouseenter на показанном div
  3. При вводе мыши в показанном div отмените привязку события размытия к полю ввода.
  4. В случае mouseleave/другого подходящего события в показанном div повторно привяжите прослушиватель событий размытия к полю ввода.
person PatrikAkerstrand    schedule 19.11.2009

Без дополнительной информации я не могу вам многого сказать, просто на вашем месте я бы попытался использовать событие change для элемента ввода текста, а не фокус и размытие. Если вы подробнее опишите, что вы пытаетесь реализовать, я смогу быть более конкретным.

person Kaze no Koe    schedule 19.11.2009