jQuery blur с исключением - PullRequest
       12

jQuery blur с исключением

1 голос
/ 19 ноября 2009

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

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

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

Ответы [ 3 ]

2 голосов
/ 19 ноября 2009
$("input.search-main-text").bind('focus', function() {
    $("div.quickResults").show();
    $(document).bind('mousedown', function(e) {
        if (! $(e.target).closest('div.quickResults').length) {
            $("div.quickResults").hide();
            $(document).unbind('mousedown', arguments.callee);
        }
    })
});
1 голос
/ 19 ноября 2009

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

  1. Привязать обработчик событий для фокуса
  2. В фокусе, привязать обработчик событий для blur + обработчик событий для mouseenter на показанном div
  3. При наведении мыши на показанный элемент div, отсоедините событие размытия от поля ввода
  4. При отпускании мышью / другом подходящем событии на показанном элементе div заново привязать слушатель события размытия к полю ввода.
0 голосов
/ 19 ноября 2009

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

...