Можно ли без костылей ограничить зону действия tab-фокуса?
Здравствуйте. Передо мной встала такая задача:
Делаю модальное окно с инпутами. Для для всех инпутов использую tabIndex. Необходимо чтобы фокусировка по инпутам работала только внутри модального окна. То есть если я нажимаю я область (не инпут) внутри модального окна, фокус не должен переходить на элементы за его пределами.
Сообразил костыль - отлавливать клик на области и фокусить контейнер модального окна, а уже затем отлавливать событие keydown на нажатие tab и в зависимости от того есть ли shiftKey - перемещать фокус на нужный инпут.
Буду рад вашему совету. Интересует - можно ли без костылей ограничить зону действия tab-фокуса.
А не проще ли установить при открытии модалки всем элементам, которые не в ней tabindex = 0 или вовсе его убрать, а при закрытии возвращать? Можно писать старый в какой-нибудь data-old-tabindex.
Данное решение не подходит. По той причине, что если на странице есть другие элементы, которые можно выделить табом в силу особенностей обычного html поведения, (например теги ) браузер будет фокусить их в любом случае. (выставляй им tabindex или не выставляй)