JavaScript .focusout()

#javascript #html #click #onblur

#javascript #HTML #нажмите #размытие

Вопрос:

Я хочу создать альтернативное поле выбора. Кто-нибудь знает, как я могу скрыть <ul> , если есть щелчок мыши за пределами элемента списка? (без jquery и «onblur» не поддерживает щелчки мыши, которые не нацелены на определенный элемент)

Комментарии:

1. blur событие не зависит от jQuery. Это стандартное событие, которое должны распознавать все браузеры .

2. @Lix: Я думаю, может быть, он говорит, что щелчок не вызовет событие размытия, поэтому он не может запустить Js, оставив список, как он мог бы сделать с input .

3. @Entimon: Привяжите обработчик кликов к document , который проверяет, произошел ли клик за пределами вашего ul .

4. По сути, как только ваш элемент находится в состоянии «открыто», щелчок в любом месте документа (которое не является одним из ваших элементов) закроет элемент select… Таким образом, вы могли бы прослушивать щелчок по объекту document.

5. Привяжите другой обработчик к контейнеру списка, который вызывает event.stopPropagation() . Это предотвращает дальнейшее всплывание события, гарантируя, что обработчик в document не будет вызван. Итак, когда document обработчик вызывается, мы знаем, что это произошло потому, что щелчок был вне списка.

Ответ №1:

У меня была такая же проблема. У меня это сработало:

 input.addEventListener("blur", function(event) {
    //Your code to hide <ul>
}, true);
  

Изменение blur на:

  • onfocusin Срабатывает, когда элемент фокусируется в первый раз.
  • onfocusout Срабатывает, когда фокус покидает элемент (почти так же, как blur )
  • focus Срабатывает, когда элемент сфокусирован.

Также должны запускаться события, которые они описывают. Я надеюсь, что это может вам помочь.