键入(keyup)时Ajax脚本无法正常工作

时间:2019-04-09 12:29:34

标签: javascript ajax

我有一个用于搜索的输入。用户开始键入,并且在键入时,表中显示了许多与键入的字符串相关的结果。

我的HTML:

<input type="text" id="searchinput" onkeyup="Search()" placeholder="Search...">

我的Javascript函数:

function Search() {
  var value = $("#searchinput").val().toLowerCase().trim();
  if (value == '') {
    $("div#results").html('');
  } else {
    $.ajax({
      type: 'post',
      url: 'getresults.php',
      data: {
        values: value
      },
      success: function(response) {
        $("div#results").html(response);
      }
    });
  }
}

如果用户快速键入搜索词,则用户将获得所需的结果。如果您缓慢键入,则会得到结果,几秒钟后,它可能会断裂并显示其他结果(也许是通过先前按下的键?)。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以尝试进行反跳,这只会在250毫秒不活动后触发请求。

$.debounce(250, function(e) {
    console.log("It works!");
})

这是我引用的去抖动功能
http://benalman.com/code/projects/jquery-throttle-debounce/jquery.ba-throttle-debounce.js