Javascript jquery - 如何在搜索条目中建立延迟

标签 javascript jquery ajax

我有一个 ajax 搜索框,它在每次击键时转到服务器并返回搜索结果。 当用户快速输入时,我只想搜索最后一个条目而不是每次击键。否则个别结果会烦人地闪烁,整个过程会变慢。

例如:如果用户快速输入“自由女神像”,我不想搜索“sta”、“stat”、“statu”等。

我的 jQuery 代码的基础是:

$('#searchbox').keyup(function(){
    if (this.value.length > 2) {    
        $.post("remote.php",{'partial':this.value},function(data){
            $("#gen_results").html(data);
        });
    }
});        


<input id="searchbox" />
<div id="gen_results"></div>

最佳答案

使用 setTimeout 或 jQuery 的 autocomplete plugin

var timer;
$('#searchbox').keyup(function(){
    if (this.value.length > 2) {
        if (timer){
                clearTimeout(timer);
        }
        timer = setTimeout(function(){
                $.post("remote.php",{'partial':this.value},function(data){
                $("#gen_results").html(data);
                });
        }, 1000);
    }
});

关于Javascript jquery - 如何在搜索条目中建立延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043523/

相关文章:

javascript - 无论如何,我可以将表从一个页面传递到 jquery 中的另一个弹出页面

javascript - jQuery 在过滤 AJAX 响应时返回未定义

javascript - 点击 'Confirm'后没有出现警告窗口

javascript - 如何覆盖函数内的数组?

javascript - 如何像 jQuery 一样过滤普通 Javascript 中的元素?

javascript - 为什么我看不到 SplitViewCommand 输入?

javascript - IE8正在将表单提交到当前页面

javascript - 使用弹出式键盘进行 Tab 键需要选择和取消选择文本框

javascript - 如何将文本换行到 DIV 中的下一行而不离开屏幕

javascript - 为 AJAX 序列化表单值