JavaScript автозаполнения при вводе - PullRequest
2 голосов
/ 20 марта 2010

Правильные парни, все плагины автозаполнения и функции, которые я обнаружил, они обновляются только после нажатия клавиш / вниз и т. Д. Это нормально, но поиск начинается только после того, как пользователь перестал печатать, и если они вводят фразу или словом, скрипт не может сразу начать предлагать и т. д.

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

Примером желаемого эффекта является Google Suggest или поиск в Facebook, поиск запускается мгновенно при каждом нажатии клавиши или изменении, как мне эмулировать это?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 20 марта 2010

Это то, что вы имеете в виду? Или вы хотите, чтобы Ajax извлекал данные из базы данных?

var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
    $("#example").autocomplete(data);

JQuery

Редактировать: я не уверен, что знаю, что вы имеете в виду, потому что этот пример работает идентично Google Suggest или Facebook. Если ваша база данных была маленькой, вы можете загрузить кеш в переменные данные при загрузке страницы. Если ваша база данных была немного больше, вы ОГРАНИЧИВАЕТЕ кэш только Х числом ответов для каждого алфавитного символа или серии символов. (т. е. ГДЕ город НРАВИТСЯ «% a» Предел 10 И ГДЕ ...)

1 голос
/ 20 марта 2010

Это зависит от того, сколько места вы ищете, и насколько хороши ваши серверы. Поиск в Facebook (я полагаю, имена людей) быстрый, потому что вы действительно ищете только около тысячи контактов. Google работает быстро, потому что они вкладывают большие средства в инфраструктуру и кэшируют множество ответов.

В одном из моих проектов я использовал этот плагин jQuery, и он обеспечивает отличную производительность при кэшировании результатов. Мы использовали его для обеспечения автозаполнения в списке из примерно 6 тысяч контактов (имена и т. Д.). Это то, что вы имели в виду?

1 голос
/ 20 марта 2010

Веб-фреймворк Wicket имеет концепцию «регулирования». Обычно запросы AJAX в приложениях Wicket помещаются в очередь по «каналу ajax», который немедленно запускает запрос, если ни один из них не выполняется. Если запрос уже запущен, следующий запрос ставится в очередь и запускается, когда текущий возвращается.

«Регулирование» позволяет поведению задерживать себя на определенное время (скажем, две секунды). Если поведение запускается снова в тот же период, обратный вызов для самого последнего поведения заменяет обратный вызов для текущего поведения в очереди. (Например, пользователь начинает вводить «albuquerque», который вызывает события «A», затем «AL», затем «ALB». Система может вызвать «A», затем «ALB», пропуская «AL», потому что это было заменяется на «ALB», сидя в очереди.) Цель этого состоит в том, чтобы мгновенно вызывать поведение при каждом нажатии клавиши, но предотвращать переполнение сервера ненужными запросами.

Посмотрите исходный код ajax на wicket: http://svn.apache.org/repos/asf/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js

Подробнее о веб-фреймворке см .: http://wicket.apache.org

...