Awesomplete подключается к существующему текстовому полю и превращает
его в автодополняемый компонент через прямую инициализацию в JavaScript.
Библиотека не требует сложной конфигурации и работает поверх
стандартного <input> или
<textarea>, расширяя его поведение за счёт привязки
экземпляра к DOM-элементу.
Основной способ запуска заключается в создании экземпляра
Awesomplete и передаче ему DOM-узла:
<input id="city" type="text" />
var input = document.getElementById("city");
new Awesomplete(input);
После выполнения этого кода поле получает базовый механизм автодополнения. Без дополнительных настроек список предложений будет пустым, а логика фильтрации — минимальной.
Наиболее распространённый сценарий — передача массива значений через
опцию list. Источник может быть задан как статический
массив строк:
var input = document.getElementById("city");
new Awesomplete(input, {
list: ["Almaty", "Astana", "Karaganda", "Shymkent", "Aktobe"]
});
При вводе символов библиотека автоматически фильтрует список по совпадению подстроки и отображает выпадающее меню.
Допустим также вариант с массивом объектов, если требуется разделение отображаемого текста и значения:
new Awesomplete(input, {
list: [
{ label: "Almaty, Kazakhstan", value: "almaty" },
{ label: "Astana, Kazakhstan", value: "astana" }
]
});
label используется для отображения, value —
для подстановки в поле ввода.
Инициализация может комбинировать HTML-атрибут data-list
и JavaScript-конфигурацию. В этом случае базовый список задаётся в
разметке:
<input id="city" data-list="Almaty, Astana, Karaganda" />
var input = document.getElementById("city");
new Awesomplete(input, {
minChars: 1
});
Значения из data-list автоматически интерпретируются как
источник данных, если не переопределены в параметрах конструктора.
Конструктор принимает второй аргумент с конфигурацией, позволяющей управлять поведением компонента:
new Awesomplete(input, {
minChars: 2,
maxItems: 5,
autoFirst: true
});
Ключевые параметры:
minChars — минимальное количество символов до появления
списка;maxItems — максимальное число отображаемых
предложений;autoFirst — автоматическое выделение первого элемента
списка.Эти параметры влияют на момент активации и структуру выпадающего списка, не требуя дополнительного кода обработки.
Инициализация может выполняться после загрузки данных или события интерфейса. Такой подход используется при асинхронной загрузке списка:
fetch("/api/cities")
.then(res => res.json())
.then(data => {
new Awesomplete(input, {
list: data
});
});
При таком способе экземпляр создаётся только после получения актуального набора данных, что позволяет синхронизировать автодополнение с серверным источником.
Экземпляр, созданный через конструктор, может быть сохранён в переменную для дальнейшего управления:
var awesompleteInstance = new Awesomplete(input, {
list: ["Almaty", "Astana"]
});
Это позволяет обращаться к методам экземпляра, включая обновление списка:
awesompleteInstance.list = ["Karaganda", "Shymkent"];
Изменение свойства list приводит к обновлению доступных
предложений без повторного создания объекта.
Библиотека допускает использование нескольких независимых экземпляров на одной странице:
var cityInput = new Awesomplete(document.getElementById("city"), {
list: ["Almaty", "Astana"]
});
var countryInput = new Awesomplete(document.getElementById("country"), {
list: ["Kazakhstan", "Russia", "China"]
});
Каждый экземпляр работает изолированно и не влияет на другие элементы интерфейса.
При необходимости стандартизации конфигурации применяется единая функция инициализации:
function initAwesomplete(selector, list) {
var input = document.querySelector(selector);
return new Awesomplete(input, {
list: list,
minChars: 1,
maxItems: 10
});
}
initAwesomplete("#city", ["Almaty", "Astana"]);
initAwesomplete("#country", ["Kazakhstan", "Russia"]);
Такой подход упрощает масштабирование и унифицирует поведение всех полей автодополнения.
После создания экземпляра возможно программное управление состоянием:
var aw = new Awesomplete(input, {
list: ["Almaty", "Astana"]
});
aw.open();
aw.close();
aw.evaluate();
Методы позволяют вручную открывать список, закрывать его или пересчитывать результаты фильтрации в зависимости от текущего значения поля.
Инициализация может зависеть от состояния DOM или данных:
var input = document.getElementById("city");
if (input) {
new Awesomplete(input, {
list: ["Almaty", "Astana"]
});
}
Такой подход предотвращает ошибки при отсутствии элемента и используется в модульной архитектуре интерфейсов.