我有一个ajax请求,每次用户按某个文本区域中的某个按钮(写入文本)时都会执行该请求。这已经很好了(它是一个搜索过滤功能btw。),但在每次击键后执行过滤器不是一个好主意。所以我在考虑制作一个延迟的东西。所以ajax请求只有在用户按下最后一个按钮后至少经过1秒才会执行。我怎样才能做到这一点?
<textarea id="text" name="text" onkeyup="Search()"</textarea>
function Search()
{
$.ajax({...
...
}
显然它会一直运行。例如,如果我输入&#34;你好&#34;快速进入textarea它将运行5次,没有用。只有当我停止写作超过1秒钟时才能运行它。
答案 0 :(得分:8)
您可以使用setTimeout
将操作延迟一定的毫秒数。如果有人快速键入,您还可以清除超时以防止请求排队。试试这个:
var timer;
function Search() {
clearTimeout(timer) // clear the request from the previous event
timer = setTimeout(function() {
$.ajax({
// ...
});
}, 200);
}
注意我延迟了200毫秒,这通常足以让某人键入多个键,但速度足够快,以至于UI的更新速度不会太慢。