Javascript 让ajax搜索功能在用户输入时延迟3秒

Javascript 让ajax搜索功能在用户输入时延迟3秒,javascript,jquery,ajax,Javascript,Jquery,Ajax,我当前的函数是lisenning for events-propertychange-change-keyup-input-paste,并发出ajax请求。然而,ajax在每封信上都会发送请求,我认为这不是一种有效的方式?还是这样 因此,我的目标是让用户键入输入,仅在3秒钟后执行ajax。使用setTimeout无法完成此任务 $(document).on('propertychange-change-keyup输入粘贴','IDaccountSearchQueryInput',函数(事件){

我当前的函数是lisenning for events-
propertychange-change-keyup-input-paste
,并发出ajax请求。然而,ajax在每封信上都会发送请求,我认为这不是一种有效的方式?还是这样

因此,我的目标是让用户键入输入,仅在3秒钟后执行ajax。使用
setTimeout
无法完成此任务

$(document).on('propertychange-change-keyup输入粘贴','IDaccountSearchQueryInput',函数(事件){
var query=$('#IDaccountSearchQueryInput').val();
setTimeout(函数(){
console.log(查询);
}, 5000);
});

您可以通过将
设置超时
id存储在变量中,然后在开始键入时清除它来完成此操作

var定时器;
$(文档).on('propertychange-change-keyup输入粘贴','IdaAccountSearchQueryInput',函数(){
if(定时器)清除超时(定时器);
var query=this.value;
如果(!query.length)返回false;
计时器=设置超时(函数(){
$(“#预览”).text(查询);
}, 3000);
});


是的,我本来打算发同样的东西。这个技巧适用于许多类似的情况SetTimeout是一个非阻塞异步函数,因此它不关心调用后会发生什么,它仍将继续工作。我还将等待用户在框中输入最小数量的字符。