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



由于环境的原因,我想把它限制在一个小而简洁的东西上,而不是一个插件,除非它是一个可以内联放在其他jquery代码旁边的扩展。

我有这个代码:

$("#txtSearch").live('keyup', function () {
    LoadList(1)     
});

我想添加一个延迟,这样如果用户必须等待0.5秒(如停止键入)才能执行调用。

因此,基本上,如果连续按键之间的时间少于X,则不会发生ajax调用

有没有一种简洁的方法可以用Jquery做到这一点?

设置超时,并在每次按键时清除它,然后再应用新的超时:

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

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

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

您可以在jQueryUI中使用自动完成小部件,它有一个延迟选项:

"自动完成"在击键后等待激活自身的延迟(以毫秒为单位)。零延迟对本地数据来说是有意义的(响应性更强),但对远程数据来说会产生大量负载,而响应性较差。

http://jqueryui.com/demos/autocomplete

最新更新