我建立一个自定义搜索引擎的网站和搜索是通过AJAX做了keyup事件,所以,当你开始输入(如果你输入两个以上的字符和字符串修剪后)完成对服务器的AJAX调用。停止传播
它完美,但有一个场景我在想,当你开始连续键入四个或者只要你想尽可能多的字符,会有尽可能多地调用您键入的字符。那么,如果你输入10个字符的话,那么这将会产生很多请求。
在这种情况下,我在想,如果有停止一切的简单方法是什么时,会发生这样的行为之前开始,拿起搜索大功告成疯狂打字后(:
我建立一个自定义搜索引擎的网站和搜索是通过AJAX做了keyup事件,所以,当你开始输入(如果你输入两个以上的字符和字符串修剪后)完成对服务器的AJAX调用。停止传播
它完美,但有一个场景我在想,当你开始连续键入四个或者只要你想尽可能多的字符,会有尽可能多地调用您键入的字符。那么,如果你输入10个字符的话,那么这将会产生很多请求。
在这种情况下,我在想,如果有停止一切的简单方法是什么时,会发生这样的行为之前开始,拿起搜索大功告成疯狂打字后(:
可以使用Underscore debounce为THA吨。 使键调出事件调用不足的函数,这种方式下划线将知道当来调用你的函数。
这个插件??? –
@roasted好吧.. 。如果你想使用Underscore * only *,那么你可以使用你的小startTimeout-wait-cancelTimeout逻辑,但是你做了两件事:a)你正在编写durty代码(是的,启动并取消超时不是*那*干净。) d b)你在浪费你的时间。下划线可以帮助你在JS中的很多东西。看看这些文档,你会看到你需要编写的代码少得多。 – alexandernst
这种方法听起来不错,但我必须包括另一个库只是为了添加此功能(: – Roland
简单地推迟。通过Ajax调用,直到他们没有为 0.5至1秒录入任何然后,你可以简单地取消的setTimeout等
- @Tejs
这是我第一次,虽然太(:但是我希望确保没有任何可以让事情变得更容易和更好的奇特方法(: – Roland
不是真的......在请求消失后你不能取消请求,所以你将不得不等待一段时间可以设想发送第一个请求,但是如果快速按下第二个按键,等到最后一个按键被按下0.5秒后发送下一个请求。 –
正如我们前面所讲,这里是某一个指定的延迟后执行功能相关的例子,如果方法被调用时,再次延迟尚未通过原来的超时被清零,一个新的重新设置。
这是一个干净的解决方案,它不需要jQuery的,只是改变用途。
How to delay the .keyup() handler until the user stops typing?
为什么不能简单地通过Ajax延迟呼叫,直到他们没有键入了0.5 anythning到1秒?然后,你可以简单地取消'setTimeout'等 – Tejs
您还可以看看'Autocomplete'插件jQuery的.. http://jqueryui.com/autocomplete/#remote –