JS властивість Event.focusin
Загальний опис
Подія focusin виникає, коли елемент або будь-який з його дочірніх елементів отримує фокус. Це схоже на подію focus, але з тією різницею, що focusin може спливати вгору по DOM-дереву, дозволяючи обробляти події фокусу не тільки на елементах, але й на їх контейнерах.
Уявіть, що у вас є форма з кількома полями. Якщо ви хочете відстежувати, коли будь-яке поле в цій формі отримує фокус, ви можете використати подію focusin на елементі форми. Це дозволить вам не прив'язувати окремий обробник для кожного поля форми, а натомість реагувати на фокус для всієї групи елементів.
Ось базовий приклад:
const form = document.querySelector('form');
form.addEventListener('focusin', function(event) {
console.log('Поле отримало фокус:', event.target);
});
У цьому прикладі подія focusin реагує на будь-яке поле форми, яке отримує фокус, і виводить у консоль елемент, що його отримав.
Особливістю focusin є те, що вона спливає (bubbling), на відміну від події focus. Це означає, що ви можете повісити обробник на батьківський елемент і отримати доступ до всіх елементів, які фокусуються всередині нього, без необхідності прив’язувати обробники до кожного окремого поля.
Якщо вам потрібно робити щось подібне з елементами, які втрачають фокус, використовуйте подію focusout, яка також має можливість спливання.
Ще один приклад:
document.addEventListener('focusin', function(event) {
event.target.style.backgroundColor = 'lightyellow';
});
Цей код змінює фон елемента, який отримав фокус, на жовтий.
Важливо зазначити, що подія focusin підтримується більшістю сучасних браузерів, але якщо ви розробляєте додатки з використанням старих версій браузерів, переконайтеся, що ваш код має відповідні поліфіли чи альтернативи.
| Порада: | Наскільки зручно використовувати |
| Порада: | У складних формах можна створювати умовну логіку на основі типу елемента, що отримав фокус. Наприклад, якщо фокус переміщується між текстовими полями, виконувати одну дію, а якщо фокус переходить на кнопки або чекбокси — іншу. |
| Порада: | Використовуйте |
Синтаксис
element.addEventListener('focusin', function(event) {
// Код, що виконується при спрацюванні події
});
Значення
Return
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
66 |
57 |
11.1 |
53 |
16 |
| Переглядач | ||||
|---|---|---|---|---|
66 |
66 |
57 |
11.3 |
| Переглядач | ||
|---|---|---|
15.0.0 |
1.0 |
Приклади
Користувач взаємодіє з полями форми, і коли будь-яке з полів отримує фокус, до нього додається клас highlight, який змінює його стиль (обводка стає зеленою). При втраті фокусу клас видаляється. Це дозволяє легко відстежувати і підсвічувати активні елементи форми.
Цей приклад ілюструє, як відслідковувати фокус тільки на текстових полях у складній формі, залишаючи інші елементи без змін. Це зручно для ситуацій, коли потрібно застосувати певну логіку лише до певних типів полів.
const form = document.querySelector('#complexForm');
form.addEventListener('focusin', function(event) {
if (event.target.tagName === 'INPUT' && event.target.type === 'text') {
console.log('Фокус на текстовому полі:', event.target.name);
}
});
Цей код демонструє, як можна відслідковувати фокусування на кнопках у документі та змінювати їхні стилі динамічно. Це може бути корисно для поліпшення інтерфейсу, роблячи активні елементи більш помітними для користувача.
document.addEventListener('focusin', function(event) {
if (event.target.tagName === 'BUTTON') {
event.target.style.borderColor = 'green';
}
});
