Проверка автозаполнения JQuery

У меня есть текстовое поле с удаленным источником данных для автозаполнения (jquery) [не плагин, оригинальный, показанный в демонстрациях jquery ui ]. Как мне убедиться, что пользователь набрал только то, что было в одном из предложений автозаполнения, и ничего собственного?

1 ответ

Решение

В вопросе отсутствует конкретика, но я предполагаю, что вы имеете в виду валидацию на стороне клиента, поскольку вы явно ссылались на плагин автозаполнения. Этот ответ будет состоять из двух частей. Первый - это оригинальный ответ, предполагающий плагин автозаполнения. Второй пересматривается на основе обновлений вопроса.

1) Использование http://docs.jquery.com/Plugins/Autocomplete

Лучшее решение для этого - опция mustMatch. Вот документация по API.

Если установлено значение true, автозаполнение будет разрешать только результаты, представленные серверной частью. Обратите внимание, что недопустимые значения приводят к пустому полю ввода.

Вы должны быть в состоянии использовать это следующим образом:

$("selector").autocomplete("url", {"mustMatch": true});

Вы также можете проверить пользовательский ввод каким-либо образом в событии "result". Вот ссылка: http://docs.jquery.com/Plugins/Autocomplete/result.

2) Использование http://jqueryui.com/demos/autocomplete

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

$( ".selector" ).autocomplete({
   change: function(event, ui) { ... }
});

Если бы вы использовали массив в качестве источника данных, это было бы более эффективно. Поскольку вы используете удаленный источник данных, вам потребуется выполнить еще один заключительный запрос, используя ui.item для проверки значения пользователя. Затем вы можете разрешить или запретить поведение по умолчанию.

В любом случае, входные данные все равно должны быть проверены на стороне сервера. Это выходит за рамки плагинов jQuery.

Другие вопросы по тегам