Объясни, будет ли работать focus навешанный на форму: от чего это зависит и почему.
Продвинутые темы
Работа `focus`, навешанного на форму, зависит от того, может ли элемент получать фокус: `<form>` сама по себе фокус обычно не принимает, а её поля ввода — да.
Какие элементы фокусируемы
По умолчанию фокус получают интерактивные элементы:
<input>,<textarea>,<select>,<button>,<a href>.
Контейнеры вроде <form>, <div> по умолчанию не фокусируемы — вызвать .focus() на них ничего не даст, если не сделать их фокусируемыми.
Как сделать элемент фокусируемым
Атрибут tabindex:
<form tabindex="-1">...</form> <!-- теперь принимает focus программно -->
<div tabindex="0">...</div> <!-- в порядке табуляции -->tabindex="0"— в естественном порядке табуляции.tabindex="-1"— фокусируем программно (.focus()), но не через Tab.
Событие focus на форме
Событие focus не всплывает (в отличие от focusin). Чтобы поймать фокус любого поля формы на уровне формы, используют focusin (всплывает) или focus с capture: true:
form.addEventListener('focusin', handler); // сработает при фокусе поля внутриОт чего зависит
- Фокусируемость элемента (нативно интерактивный или
tabindex). - Всплывает ли событие (
focus— нет,focusin— да). - Видимость и
disabled(скрытые/отключённые не фокусируются).
Коротко для собеседования
Зависит от фокусируемости: <form> сама фокус не принимает (нужен tabindex), а её поля — да. Событие focus не всплывает — на уровне формы ловят focusin (всплывает) или focus с capture. Скрытые/disabled элементы фокус не получают.