Awesomplete поддерживает инициализацию без явного вызова
new Awesomplete(...) в JavaScript-коде. В этом режиме вся
конфигурация задаётся через HTML-атрибуты, а библиотека автоматически
сканирует DOM и активирует элементы при загрузке.
Ключевым механизмом выступает атрибут
class="awesomplete" и набор data-* параметров,
определяющих поведение автодополнения.
<input class="awesomplete" data-list="JavaScript, TypeScript, Python, Ruby, Go">
После подключения библиотеки такой элемент автоматически получает функциональность автодополнения без дополнительного JS-кода.
Основной параметр инициализации — data-list. Он задаёт
набор значений, используемых для автодополнения. Поддерживаются
несколько форматов записи.
<input class="awesomplete"
data-list="Apple, Banana, Cherry, Orange">
Элементы разделяются запятыми. Пробелы после разделителя игнорируются.
<input class="awesomplete"
data-list='["React", "Vue", "Svelte", "Angular"]'>
JSON-формат используется при необходимости точного контроля над значениями, включая строки с запятыми или спецсимволами.
Awesomplete также допускает формат, где отображаемое значение и реальное значение различаются:
<input class="awesomplete"
data-list='[{"label":"United States","value":"US"},{"label":"Germany","value":"DE"}]'>
В этом случае в списке отображается label, а при выборе
подставляется value.
Помимо списка значений, поведение автодополнения регулируется дополнительными атрибутами.
<input class="awesomplete"
data-list="JavaScript, Java, Python"
data-minchars="2">
Параметр data-minchars задаёт минимальное число
символов, после которого начинается поиск совпадений. Значение по
умолчанию — 1.
<input class="awesomplete"
data-list="HTML, CSS, JS, TS, Node, Deno"
data-maxitems="4">
data-maxitems ограничивает количество элементов в
выпадающем списке.
<input class="awesomplete"
data-list="React, Vue, Angular"
data-autofirst="true">
При включённом data-autofirst первый элемент списка
автоматически подсвечивается и может быть выбран клавишей
Enter без дополнительной навигации.
Awesomplete позволяет управлять логикой подбора совпадений через атрибуты, влияющие на встроенные функции фильтрации.
<input class="awesomplete"
data-list="Berlin, Bern, Brussels, Barcelona"
data-sort="false">
data-sort="false" отключает сортировку результатовФильтрация при этом остаётся активной, но может быть переопределена кастомными механизмами при расширенной интеграции.
При подключении скрипта Awesomplete выполняется сканирование
документа на элементы с классом awesomplete. Для каждого
найденного элемента создаётся экземпляр компонента и считываются
атрибуты конфигурации.
Типичный порядок обработки:
input.awesompletedata-listdata-* параметровВсе data-* атрибуты могут использоваться одновременно,
формируя полную конфигурацию без JavaScript-кода.
<input class="awesomplete"
data-list='["Copenhagen","Oslo","Helsinki","Stockholm","Reykjavik"]'
data-minchars="1"
data-maxitems="3"
data-autofirst="true"
data-sort="true">
В таком варианте полностью определяется поведение компонента: источник данных, порог активации, количество результатов и логика выбора.
При использовании строкового формата список разбивается по запятой, поэтому важно учитывать ограничения:
Для сложных структур предпочтителен JSON-формат, обеспечивающий корректную обработку вложенных данных и специальных символов.
Изменение data-* атрибутов после инициализации не всегда
приводит к автоматическому обновлению состояния компонента. В
большинстве случаев требуется либо повторная инициализация, либо ручное
обновление экземпляра через API Awesomplete.
При динамическом управлении списками чаще используется программный способ создания экземпляра, но HTML-инициализация остаётся удобной для статических или полу-статических интерфейсов.
HTML-инициализация поддерживает множественные независимые экземпляры:
<input class="awesomplete" data-list="Red, Green, Blue">
<input class="awesomplete" data-list="One, Two, Three">
<input class="awesomplete" data-list="Dog, Cat, Bird">
Каждое поле получает собственный экземпляр автодополнения с изолированной конфигурацией, не влияющей на другие элементы страницы.