Автокомплит Autocomplete
Поле ввода с подсказками на чистом JavaScript
Пример
Автокомплит списка городов
Установка
1. Подключите JS и CSS файлы
Собранные и минифицированные файлы содержатся в папке dist/ в GitHub репозитории. Скопируйте содержимое папки в ваш проект. Sass и исходные JS файлы содержатся в папке src/, но перед использованием их необходимо собрать.
Вставьте данные строчки кода в ваш HTML
<link rel="stylesheet" href="path/to/autocomplete.min.css">
<script src="path/to/autocomplete.min.js"></script>
CSS рекомендуется вставлять в <head>
, а JS перед </body>
2. Вставьте HTML
<div class="autocomplete-wrapper">
<input id="city" type="text" class="autocomplete" placeholder="Начните вводить код или название">
</div>
3. Инициализируйте JS
var options = {
source: 'kladr.json',
displayedProperty: 'City',
wordEndings: ['города','городов'],
};
Autocomplete('.autocomplete', options);
Первый аргумент – селектор (String
) или объект Element
Второй аргумент – опции (Object
)
Опции
Автокомплит имеет разные настройки, которые можно передать в конструктор при инициализации
Опция | Значения | По умолчанию | Описание |
---|---|---|---|
source (обязательная) | String, function или массив объектов (в частности, массив строк) | null | Ссылка на источник данных в формате JSON или массив. Если это массив строк, опция displayedProperty игнорируется. Функция принимает первым аргументом строку запроса и должна возвращать адрес источника данных. |
arrow | true, false | false | Если true, автокомплит со стрелкой, иначе без |
displayedProperty | String | value | Свойство объекта, значение которого будет отображаться в выпадающем списке |
wordEndings | Array(2) | null | Слова в родительном падеже (обозначают сущность поиска). Например, ['города','городов']. |
dropdownPosition | top, bottom, auto | auto | Определяет, с какой стороны от поля ввода появится выпадающий список: сверху или снизу. Если установлено auto, положение будет определяться автоматически. |
caseSensitive | true, false | false | Искать с учетом регистра или без (все строки приводятся к нижнему регистру) |
searchByEntry | true, false | false | Включает поиск по вхождению |
sort | true, false | false | Если true - список сортируется |
sortBy | String | displayedProperty | Свойство объекта, по которому идёт сортировка |
sortOrder | asc, desc | asc | Определяет порядок сортировки |
isValidElement | function | всегда true | Функция для фильтрации некорректных значений. Должна возвращать false, если передаваемый объект не должен участовать в поиске |
ownValue | true, false | false | Если true, разрешается указывать свое значение, при этом выводится предупреждение |
minHeight | Number | 200 | Минимальная высота, в которую будет может уместиться выпадающий список. Если снизу столько пространства нет - список покажется сверху (пикс.) |
maxHeight | Number | 450 | Максимальная высота выпадающего списка (пикс.) |
События
onselect
Событие возникает, когда был выбран или введён элемент из списка. Обработать событие можно, установив callback на onselect
var cityAutocomplete = Autocomplete('.autocomplete', options);
cityAutocomplete.onselect = function(element){
console.log(element);
};
// Object {Id: 123, City: "Екатеринбург"}
Сборка
Собрать исходный код проекта можно с помощью npm
cd /path/to/project
npm install
npm build
При вызове команды npm build:prod
будут сгенерированы минифицированные файлы
Дополнительные примеры
Автокомплит с поиском по вхождению