因此,我在文本框上的 jQuery 中对每个事件keyup
调用AJAX 请求:paste
$("#server-label").bind("keyup paste", function() {
$.ajax()...
});
问题是如果用户快速按键,这就是太多的 AJAX 请求。在调用 AJAX 请求之前,等待用户停止输入一段时间(比如 500 毫秒)的最佳方法是什么?基本上不要发出 AJAX 请求,直到在 500 毫秒内没有触发任何键或粘贴事件。
谢谢。
因此,我在文本框上的 jQuery 中对每个事件keyup
调用AJAX 请求:paste
$("#server-label").bind("keyup paste", function() {
$.ajax()...
});
问题是如果用户快速按键,这就是太多的 AJAX 请求。在调用 AJAX 请求之前,等待用户停止输入一段时间(比如 500 毫秒)的最佳方法是什么?基本上不要发出 AJAX 请求,直到在 500 毫秒内没有触发任何键或粘贴事件。
谢谢。
尝试使用setTimeout()
和timer
var 来跟踪它:
var t;
$("#server-label").on("keyup paste", function() {
clearTimeout(t);
t = setTimeout(function() {
$.ajax({/*[...]*/});
//...
}, 500);
});
您也可以使用节流阀或去抖动,但如果您将代码包装在函数对象或字符串中以传递给函数,我认为没有必要setTimeout()
。