jQuery - плагин автозаполнения - PullRequest
2 голосов
/ 10 января 2011

Я использую это:

https://github.com/agarzola/jQueryAutocompletePlugin

Единственная проблема заключается в том, что при вводе 1-го символа в поле ввода будут отображаться все варианты терминов, включая терминыкоторые не содержат этот символ.

И только после того, как вы введете 2-й символ, он будет вести себя нормально, отображая подсказки тегов, содержащие только эти 2 символа.

Я использую эту конфигурацию:

$('input.autocomplete').autocomplete("localhost/boo/?get_suggestions=1", {
   width: 250,
   max: 100,
   matchContains: true,
   minChars: 1,
   selectFirst: true,
   cache: false,
   multiple: true,
   multipleSeparator: " "
 });

Кто-нибудь знает обходной путь для этого?

alt text

Также, когда я набираю случайную строку, которая, как я знаю, отсутствует в списке, например,,*&@FGBHFHBOFUBF*UB# снова отобразится весь список: (

Серверная часть:

if($_GET['get_suggestions']):
  $terms = get_all_terms();
  foreach ($terms as $term) echo $term['title']."\n";
  die();
endif;

Ответы [ 4 ]

1 голос
/ 10 января 2011

Я поддерживаю репозиторий github. Вот что происходит:

В случае использования URL-адреса для данных сценарий отправляет запрос в соответствии с тем, что вы указали в указанном URL-адресе, и добавляет q=[current input value] в конце. В случае начальной загрузки, когда вы набираете «a», это отправляется вашему бэкэнд-скрипту: localhost/boo/?get_suggestions=1&q=a. Таким образом, autocompelte.js ожидает, что этот начальный запрос произведет только элементы, соответствующие запросу. После этого первоначального запроса сценарий будет выполнять внутреннюю фильтрацию для уменьшения нагрузки на сервер. Это объясняет, почему «ac» возвращает только те элементы, которые соответствуют вашим критериям. Это сценарий автозаполнения, выполняющий свою работу по фильтрации того, что ему дал сервер.

Если я правильно интерпретирую ваш бэкэнд-код, он не использует параметр q, отправляемый в запросе, поэтому ваш код возвращает все возможные термины. Автозаполнение предполагает, что это результат правильного поиска, и показывает вам все это, ожидая ввода дополнительных символов для дальнейшей фильтрации списка.

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

Дайте мне знать, если я смогу оказать дальнейшую помощь!

1 голос
/ 10 января 2011

Измените ваши minchars на 2

 minChars: 2

Это сделает так, что он будет предлагать только вещи из 2 символов.

или попробуйте отключить несколько.

multiple: false

Вам это нужно включить?

Если это не ваша чашка чая, отправьте код для localhost / boo /? Get_suggestions = 1, и мы посмотрим, посмотрим:)

1 голос
/ 10 января 2011

Этот код автозаполнения неверен в какой-то части.На изображении, которое вы разместили, когда вы набрали a, показывался длинный список всех терминов;когда вы набрали ac список предложений соответствовал a вместо ac.

Что это значит?код принимает входное значение перед новым символом.Вы можете погрузиться в код плагина или использовать новый плагин.

1 голос
/ 10 января 2011

Я бы предложил вообще отключить подсказки для первого символа и начать со второго или даже третьего символа. Большинство людей, в том числе и я, считают раздражающим мгновенное получение спама с предложениями после ввода "b".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...