При инициализации плагина в него передается объект с опциями:

$(selector).suggestions(options);

В них можно передать коллбеки (функции-обработчики для событий, происходящих в работе плагина):

КоллбекОписание
beforeRender

function (container) {}

Вызывается перед показом выпадающего списка. this привязано к input-элементу.

formatResult

function (value, currentValue, suggestion, options) {}

Форматирование подсказки перед ее отображением в списке.

formatSelected

function (suggestion) {}

Возвращает строку для вставки в поле ввода при выборе подсказки

onInvalidateSelection

function (suggestion) {}

Вызывается при изменении значения input-элемента, после выбора варианта из списка.

this привязано к input-элементу.

onSearchStart

function (params) {}

Вызывается перед началом ajax-запроса к серверу. Здесь можно модифицировать запрос (свойство params.query).

this привязано к input-элементу.

onSearchComplete

function (query, suggestions) {}

Вызывается при получении ответа от сервера. В suggestions передается массив полученных подсказок.

this привязано к input-элементу.

onSearchError

function (query, jqXHR, textStatus, errorThrown) {}

Вызывается, если сервер вернул ошибку.

this привязано к input-элементу.

onSuggestionsFetch

function (suggestions) {}

Вызывается, когда подсказки получены и проверен их формат. Здесь их можно отсортировать или отфильтровать перед дальнейшей обработкой.

В suggestions передается массив полученных подсказок. Можно изменять непосредственно этот массив, либо вернуть новый массив.

this привязано к input-элементу.

onSelect

function (suggestion, changed) {}

Вызывается при выборе подсказки (как при выборе пользователя, так и при автоматическом).

this привязано к input-элементу. 

changed показывает, было ли реально выбрано новое значение (true), или только обогащено текущее 
(false, т.е. когда suggestion.value осталось прежним, а только обновились поля в suggestion.data)

onSelectNothing

function (query) {}

Вызывается, пользователь нажал ENTER или input-элемент потерял фокус, а подходящей подсказки нет.

this привязано к input-элементу. 

  • No labels