合适的人,我发现的所有自动完成插件和功能,他们只在keyup / down等时更新等等。这很好,但搜索只在用户停止输入后才开始发生,如果他们输入短语或单词,脚本无法立即开始建议等。
我知道这对于你们中的一些人来说是一个非常简单的修复或建议,所以任何帮助都会非常感激我如何将它转换为按键时立即转换它。
想要的效果的一个示例是Google Suggest或Facebook搜索,每按一次按键或更改会立即触发搜索,我该如何模仿?
谢谢!
答案 0 :(得分:2)
var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
$("#example").autocomplete(data);
编辑:我不确定我知道你的意思,因为这个例子似乎与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联系人(名称等)的列表上提供自动完成功能。这是你的想法吗?