en.javascript.info/2-ui/5-widgets/5-custom-events/3-custom-select/solution.md
2014-12-22 13:55:31 +03:00

1.4 KiB
Raw Blame History

В этом решении для закрытия селекта по клику вне него используется отслеживание произвольных кликов вне документа.

Альтернатива -- события focusin/focusout, т.е. считаем, что пока фокус в селекте -- он открыт. С одной стороны, это более мощный способ, он позволяет перемещаться по элементам управления при помощи [key Tab] и корректно обрабатывать уход при помощи клавиатуры.

С другой стороны, это решение не универсально: если выводится alert, то фокус "прыгает" в него, уходя с элемента, а потом возвращается обратно. При этом JavaScript зарегистрирует уход фокуса focusout и возвращение focusin, хотя по смыслу фокус с элемента никуда не уходил, просто был alert.

Побочный эффект -- к закрытию и раскрытию (лишнему) элемента управления при таких "ненамеренных" потерях фокуса. Поэтому был выбран onclick.

Решение: