#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
Срабатывает, когда элемент сфокусирован.
Также должны запускаться события, которые они описывают. Я надеюсь, что это может вам помочь.