键入时JavaScript自动填充

时间:2010-03-20 15:48:13

标签: javascript jquery autocomplete jquery-autocomplete

合适的人,我发现的所有自动完成插件和功能,他们只在keyup / down等时更新等等。这很好,但搜索只在用户停止输入后才开始发生,如果他们输入短语或单词,脚本无法立即开始建议等。

我知道这对于你们中的一些人来说是一个非常简单的修复或建议,所以任何帮助都会非常感激我如何将它转换为按键时立即转换它。

想要的效果的一个示例是Google Suggest或Facebook搜索,每按一次按键或更改会立即触发搜索,我该如何模仿?

谢谢!

3 个答案:

答案 0 :(得分:2)

这是什么意思?或者您是否希望Ajax从数据库中检索?

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

JQuery

编辑:我不确定我知道你的意思,因为这个例子似乎与Google Suggest或Facebook完全相同。如果您的数据库很小,您可以在页面加载时将缓存下载到变量数据中。如果您的数据库略大,则将缓存限制为每个字母字符或一系列字符的X响应数。 (即,城市像'aa%'限制10和那里......)

答案 1 :(得分:1)

Wicket Web框架具有“限制”行为的概念。通常,Wicket应用程序中的AJAX请求会对“ajax通道”进行排队,如果没有运行,它会立即触发请求。如果请求已在运行,则下一个请求将排队,并在当前请求返回时触发。

“Throttling”让行为延迟一段时间(比方说,两秒钟)。如果行为在同一时间段内再次触发,则最近行为的回调将替换当前排队行为的回调。 (例如,用户开始输入“albuquerque”,它会触发事件“A”然后“AL”,然后是“ALB”。系统可能会触发“A”,然后是“ALB”,跳过“AL”,因为它是在坐在队列中时用“ALB”代替。)这个目的是在每个按键上立即触发一个行为,但是防止服务器被不必要的请求充斥。

查看wicket ajax源代码:     http://svn.apache.org/repos/asf/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js

有关Web框架的更多信息,请参阅: http://wicket.apache.org

答案 2 :(得分:1)

这取决于您搜索的空间有多大以及您的服务器有多好。 Facebook搜索(我假设人们的名字)很快,因为你只是真正搜索了大约一千个联系人。谷歌很快,因为他们在基础设施上投入了大量资金,并缓存了大量的回复。

在我的一个项目中,我使用了this jQuery插件,它在缓存结果上提供了出色的性能。我们使用它在大约6K联系人(名称等)的列表上提供自动完成功能。这是你的想法吗?