|
| 1 | + |
1 | 2 | # Фокусировка: focus/blur |
2 | 3 |
|
3 | 4 | Элемент получает фокус, когда пользователь кликает по нему или использует клавишу `key:Tab`. Также существует HTML-атрибут `autofocus`, который устанавливает фокус на элемент, когда страница загружается. Есть и другие способы получения фокуса, о них - далее. |
|
51 | 52 |
|
52 | 53 | Современный HTML позволяет делать валидацию с помощью атрибутов `required`, `pattern` и т.д. Иногда - это всё, что нам нужно. JavaScript можно использовать, когда мы хотим больше гибкости. А ещё мы могли бы отправлять изменённое значение на сервер, если оно правильное. |
53 | 54 |
|
54 | | - |
55 | 55 | ## Методы focus/blur |
56 | 56 |
|
57 | 57 | Методы `elem.focus()` и `elem.blur()` устанавливают/снимают фокус. |
|
90 | 90 |
|
91 | 91 | Отметим, что мы не можем "отменить потерю фокуса", вызвав `event.preventDefault()` в обработчике `onblur` потому, что `onblur` срабатывает *после* потери фокуса элементом. |
92 | 92 |
|
| 93 | +Однако на практике следует хорошо подумать, прежде чем внедрять что-то подобное, потому что мы обычно *должны показывать ошибки* пользователю, но они *не должны мешать* пользователю при заполнении нашей формы. Ведь, вполне возможно, что он захочет сначала заполнить другие поля. |
| 94 | + |
93 | 95 | ```warn header="Потеря фокуса, вызванная JavaScript" |
94 | 96 | Потеря фокуса может произойти по множеству причин. |
95 | 97 |
|
|
102 | 104 |
|
103 | 105 | Используя эти события, нужно быть осторожным. Если мы хотим отследить потерю фокуса, которую инициировал пользователь, тогда нам следует избегать её самим. |
104 | 106 | ``` |
| 107 | + |
105 | 108 | ## Включаем фокусировку на любом элементе: tabindex |
106 | 109 |
|
107 | 110 | Многие элементы по умолчанию не поддерживают фокусировку. |
|
125 | 128 | - `tabindex="0"` ставит элемент в один ряд с элементами без `tabindex`. То есть, при переключении такие элементы будут после элементов с `tabindex ≥ 1`. |
126 | 129 |
|
127 | 130 | Обычно используется, чтобы включить фокусировку на элементе, но не менять порядок переключения. Чтобы элемент мог участвовать в форме наравне с обычными `<input>`. |
| 131 | + |
128 | 132 | - `tabindex="-1"` позволяет фокусироваться на элементе только программно. Клавиша `key:Tab` проигнорирует такой элемент, но метод `elem.focus()` будет действовать. |
129 | 133 |
|
130 | 134 | Например, список ниже. Кликните первый пункт в списке и нажмите `key:Tab`: |
|
0 commit comments