所以我在文本框的jQuery中的每个keyup
和paste
事件上调用一个AJAX请求:
$("#server-label").bind("keyup paste", function() {
$.ajax()...
});
问题是如果用户快速按下键,这就是太多的AJAX请求。在调用AJAX请求之前,等待用户停止输入一段(比如500ms)之前等待的最佳方法是什么。基本上,在没有键或粘贴事件被触发500ms之前,不要发出AJAX请求。
感谢。
答案 0 :(得分:13)
尝试使用setTimeout()
和timer
var来跟踪它:
var t;
$("#server-label").on("keyup paste", function() {
clearTimeout(t);
t = setTimeout(function() {
$.ajax({/*[...]*/});
//...
}, 500);
});
您也可以使用throttle或debounce但我认为如果将代码包装在函数对象或字符串中以传递给setTimeout()
函数,则认为没有必要。