4

因此,我在文本框上的 jQuery 中对每个事件keyup调用AJAX 请求:paste

 $("#server-label").bind("keyup paste", function() {
     $.ajax()...
 });

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

谢谢。

4

1 回答 1

13

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

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

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

于 2012-05-05T00:34:13.883 回答