Событие awesomplete-highlight срабатывает в момент, когда пользователь перемещает фокус подсветки на один из элементов выпадающего списка автодополнения. Это промежуточный этап взаимодействия между появлением списка подсказок и окончательным выбором значения.
Подсветка в контексте Awesomplete означает активный элемент списка, который пользователь выделяет с помощью клавиш ↑ / ↓ или наведением мыши. Именно изменение этого активного элемента и вызывает событие.
Событие возникает каждый раз, когда изменяется текущий индекс выделенного элемента списка:
Важно понимать, что событие не связано с выбором значения. Оно фиксирует только факт изменения активной подсветки.
Обработчик awesomplete-highlight получает объект
события, содержащий полезные данные о текущем состоянии списка.
Основные поля:
text — объект, содержащий данные выбранного элемента
label — отображаемый текстvalue — значение, которое будет вставлено при
выбореindex — индекс текущего элемента в массиве подсказок
originalEvent — исходное DOM-событие (keyboard или mouse), вызвавшее изменение
const input = document.querySelector("#city");
const awesomplete = new Awesomplete(input, {
list: ["Almaty", "Astana", "Shymkent", "Karaganda"]
});
input.addEventListener("awesomplete-highlight", function (event) {
console.log("Подсвечен элемент:", event.text.label);
console.log("Индекс:", event.index);
});
В данном примере каждый раз при перемещении по списку подсказок в консоль выводится информация о текущем активном элементе.
Ключевое различие между событиями:
Это различие критично для сценариев, где требуется предварительный просмотр данных без их фиксации в input.
Событие часто используется для динамического отображения дополнительной информации о текущей подсказке.
input.addEventListener("awesomplete-highlight", function (event) {
document.querySelector("#preview").textContent =
"Выбрано: " + event.text.label;
});
Такой подход позволяет создавать интерфейсы с мгновенной обратной связью.
При наличии сложных UI-компонентов подсветка может управлять состоянием других элементов интерфейса:
input.addEventListener("awesomplete-highlight", function (event) {
updateMap(event.text.value);
});
Событие может использоваться для аналитики взаимодействий:
input.addEventListener("awesomplete-highlight", function (event) {
analytics.log("autocomplete_highlight", {
value: event.text.value,
index: event.index
});
});
Это позволяет отслеживать, какие варианты пользователь рассматривает, даже если он их не выбирает.
Если список пуст или фильтрация не возвращает результатов, событие awesomplete-highlight не вызывается. Подсветка просто отсутствует, так как нет активных элементов.
При навигации с клавиатуры событие генерируется строго последовательно:
Поведение всегда синхронизировано с текущим состоянием списка.
При наведении курсора:
Это важно учитывать при сложных интерфейсах, где hover может часто меняться.
При использовании кастомного рендеринга списка поведение события сохраняется, но ответственность за визуальную подсветку может частично переходить к разработчику. В таких случаях событие становится ключевым источником состояния.
input.addEventListener("awesomplete-highlight", function (event) {
highlightCustomRow(event.index);
});
При высокой частоте обновлений (например, при быстром перемещении стрелками) обработчики должны быть оптимизированы, чтобы не перегружать интерфейс.
awesomplete-highlight выступает как промежуточный слой между фильтрацией данных и финальным выбором. Он формирует интерактивность интерфейса, делая автодополнение не статическим списком, а динамической системой навигации по вариантам.