Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
03 Ноя 2023
2 мин
566

Определение элемента с фокусом в DOM с помощью JavaScript

Иногда возникает ситуация, когда необходимо определить, какой элемент в документе в данный момент имеет фокус. Например, при создании интерактивного

Иногда возникает ситуация, когда необходимо определить, какой элемент в документе в данный момент имеет фокус. Например, при создании интерактивного интерфейса, где необходимо управление с помощью клавиатуры.

Рассмотрим ситуацию: есть таблица, состоящая из элементов input. Хотелось бы реализовать навигацию по ней с помощью стрелок на клавиатуре. По умолчанию, клавиша Tab позволяет перемещаться между активными элементами страницы, но стрелки и клавиша Enter такой функции не имеют.

При создании функционала для обработки клавишных событий важно знать, на каком элементе сейчас находится фокус. Для этого в JavaScript есть возможность использовать свойство document.activeElement.

var focusedElement = document.activeElement;

В переменной focusedElement теперь содержится ссылка на элемент, который в данный момент имеет фокус. Если ни один элемент не имеет фокуса, то document.activeElement будет равен body.

Как только известно, какой элемент имеет фокус, можно начать работу с ним, например, перемещать фокус на следующий или предыдущий элемент в зависимости от нажатой клавиши.

// предположим, что у каждого input есть id в формате "input-1", "input-2" и т.д.
var currentId = parseInt(focusedElement.id.split('-')[1]);
if (event.keyCode == 'ArrowRight') {
    var nextId = currentId + 1;
    var nextElement = document.getElementById('input-' + nextId);
    if (nextElement) nextElement.focus();
}

Таким образом, используя document.activeElement, можно узнать, какой элемент имеет фокус, и управлять этим фокусом в зависимости от пользовательского ввода.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий