jquery - 实时搜索ajax调用作为用户类型,但延迟很小?

Jos*_*eld 8 jquery

由于环境原因,我想将此限制为小而简洁而不是插件,除非它是一个可以放在其他jquery代码旁边的扩展.

我有这个代码:

$("#txtSearch").live('keyup', function () {
    LoadList(1)     
});
Run Code Online (Sandbox Code Playgroud)

我想添加一个延迟,如果用户必须在执行调用前0.5秒等待(如停止输入).

所以基本上如果在连续击键之间输入的字母少于X时间,则不会发生ajax调用.

使用Jquery有一个简洁的方法吗?

Nik*_*las 22

在应用新的击键之前设置超时并在每次击键时清除它:

var timeout;
$("body").on('keyup', '#txtSearch', function () {
    window.clearTimeout(timeout);
    timeout = window.setTimeout(function(){
       LoadList(1); 
    },500);

});
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/niklasvh/KgRjJ/


gen*_*sis 10

$("#txtSearch").live('keyup', function () {
    var value=$("#txtSearch").val();
    setTimeout(function(){
          if ($("#txtSearch").val() == value)
          {
                 LoadList(1)      
          }
    },500);
});
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,它加载了两次列表,而clearTimeout的下一个答案工作得很好,看起来更干净. (3认同)