egy*_*yar 6 javascript ajax jquery
我有一个ajax请求,每当用户按某个文本区域中的某个按钮(写入文本)时执行该请求.这已经很好了(它是一个搜索过滤功能btw.),但在每次击键后执行过滤器不是一个好主意.所以我在考虑制作一个延迟的东西.所以ajax请求只有在用户按下最后一个按钮后至少经过1秒才会执行.我怎样才能做到这一点?
<textarea id="text" name="text" onkeyup="Search()"</textarea>
function Search()
{
$.ajax({...
...
}
Run Code Online (Sandbox Code Playgroud)
所以显然它会一直运行.例如,如果我在textarea中快速键入"hello",它将运行5次并且没有用处.只有当我停止写作超过1秒钟时才能运行它.
您可以使用setTimeout将操作延迟设定的毫秒数.如果有人快速键入,您还可以清除超时以防止请求排队.试试这个:
var timer;
function Search() {
clearTimeout(timer) // clear the request from the previous event
timer = setTimeout(function() {
$.ajax({
// ...
});
}, 200);
}
Run Code Online (Sandbox Code Playgroud)
注意我延迟了200毫秒,这通常足以让某人键入几个键,但速度足够快,以至于UI不会显得太慢而无法更新.
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |