проверка автозаполнения JQuery - PullRequest
7 голосов
/ 08 декабря 2010

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

1 Ответ

13 голосов
/ 08 декабря 2010

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

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

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

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

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

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

Вы также можете проверить ввод пользователя некоторым способомв событии «результат».Вот ссылка: http://docs.jquery.com/Plugins/Autocomplete/result.

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

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

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

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

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

...