在KeyUp和粘贴事件上节流AJAX请求

Jus*_*tin 4 javascript ajax jquery

所以我在文本框上的jQuery中调用每个keyuppaste事件的AJAX请求:

 $("#server-label").bind("keyup paste", function() {
     $.ajax()...
 });
Run Code Online (Sandbox Code Playgroud)

问题是如果用户快速按下键,这就是太多的AJAX请求.在调用AJAX请求之前,等待用户停止输入一段(比如500ms)之前等待的最佳方法是什么.基本上不要发出AJAX请求,直到没有键或粘贴事件触发500ms.

谢谢.

Fab*_*tté 13

尝试使用setTimeout()timervar来跟踪它:

var t;
$("#server-label").on("keyup paste", function() {
    clearTimeout(t);
    t = setTimeout(function() {
        $.ajax({/*[...]*/});
        //...
    }, 500);
});
Run Code Online (Sandbox Code Playgroud)

您也可以使用节流或去抖,但我认为如果将代码包装在函数对象或字符串中以传递给setTimeout()函数,则认为没有必要.