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

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

  1. Если вы ищете страны и набираете «В», появляется пара стран. Если вы продолжите вводить I-n-d-i-a, это приведет к 5 вызовам AJAX (см. http://www.freeimagehosting.net/uploads/6f1bcd69e1.png) Вполне естественно, что Индия является подмножеством In, так зачем звонить снова? Нам нужно просто отфильтровать полученный список на стороне клиента. Кто-нибудь знает о такой реализации?

  2. Каков статус функции автозаполнения Jquery? Я прочитал в StackOverflow, что он больше не доступен с Jquery; но на сайте Jquery есть отметка «Новый», кроме ссылки на «Автозаполнение».

Спасибо

Ответы [ 2 ]

8 голосов
/ 28 апреля 2010

Точка, о которой вы пишете в 1. , может быть из-за:

  • Поиск 'In' должен вернуть много результатов
  • Существует определенное ограничение на стороне сервера, чтобы никогда не возвращать больше, чем N результатов
  • Что означает, что полный список стран содержит "In", неизвестно на стороне клиента
  • Это означает, что невозможно получить (точно) список, который соответствует "Ind" без другого запроса Ajax.

Половина решения, которое часто используется, состоит в том, чтобы не отправлять запрос Ajax сразу после нажатия клавиши, а только через 100 или 200 миллисекунд после.

Таким образом, если пользователь быстро набирает "Indi" и ждет, прежде чем набрать что-то еще, будет только 1 запрос Ajax для "Indi" (и ни для "In" , "Ind")

3 голосов
/ 28 апреля 2010

Автозаполнение пользовательского интерфейса jQuery было добавлено в новой версии 1.8, так что, насколько я видел в проекте, он все еще находится в стадии разработки. Существует пример , который использует кэш на стороне клиента относительно проблемы, которую вы объяснили. Вы также можете использовать уже упомянутую опцию delay .

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