小编典典

keyup(function())ajax请求延迟-jQuery

ajax

我有一个jQuery Ajax请求,我想用文本输入调用它,因此我将其嵌套在里面keyup(function()。这很好。

$("#text_box").keyup(function() {
 //AJAX REQUEST
});

但这有时表现为越野车。当我非常快速地输入一些文本时,我得到的输入单词的结果中省略了原始输入单词的最后几个字母(可能是浏览器的某些错误)。我希望在没有输入活动持续一秒钟的情况下发送ajax请求,如果我很快输入文本并休息一秒钟(意味着我进行了输入)。我怎样才能做到这一点?


阅读 322

收藏
2020-07-26

共1个答案

小编典典

听起来好像是从先前的ajax调用中获得了结果。与setTimeout和一起使用计时器clearTimeout

var timer = null;

$("#text_box").keyup(function() {
  if(timer) {
    clearTimeout(timer);
  }

  timer = setTimeout(someFunction, someDelay);
});

在哪里someFunction进行ajax调用的函数,someDelay是用户键入后要等待的延迟(以毫秒为单位),以ms为单位。

2020-07-26