Javascript jquery使实时过滤器与快速按键保持一致

Javascript jquery使实时过滤器与快速按键保持一致,javascript,jquery,Javascript,Jquery,可能重复: 我写了一个QuickLive过滤器,它将过滤大约一万个项目的长列表。每个项的子项都有大量与其相关的元数据。描述、相关文档、用途等。我一次带一封信,然后从那里过滤页面。如果有人打字太快,页面可能跟不上。如果我要快速键入“Cam”,我可能会收到多个tag-C ID 我的问题是有没有办法限制函数调用直到击键停止。几乎是一次按键 这是我快速制作的小提琴,展示了我所追求的, 但是我的代码有点复杂。我有一个较长的列表,一次只能包含一个字母,并将搜索字符串规范化一点。本质上,每次此.value[

可能重复:

我写了一个QuickLive过滤器,它将过滤大约一万个项目的长列表。每个项的子项都有大量与其相关的元数据。描述、相关文档、用途等。我一次带一封信,然后从那里过滤页面。如果有人打字太快,页面可能跟不上。如果我要快速键入“Cam”,我可能会收到多个tag-C ID

我的问题是有没有办法限制函数调用直到击键停止。几乎是一次按键

这是我快速制作的小提琴,展示了我所追求的,
但是我的代码有点复杂。我有一个较长的列表,一次只能包含一个字母,并将搜索字符串规范化一点。本质上,每次
此.value[0]
更改时,它都会返回到服务器并获取一组新的标记。从那里,我使用jquery过滤页面上的内容

启动计时器。在每次按键时重置它。当用户停止键入时(300-600毫秒为好),计时器将启动。调用您的函数。

启动计时器。在每次按键时重置它。当用户停止键入时(300-600毫秒为好),计时器将启动。调用你的函数。

通常你会使用
clearTimeout
setTimeout
来触发真正的搜索

在keyup上,不要直接执行搜索,而是启动一个计时器,例如500毫秒后执行搜索

clearTimeout调用是停止在前一个keyup上启动的任何前一个计时器(对于键入的每个字母,您都会得到一个keyup事件)

例如:

var to;

$('#live-search').on('keyup', '#live-search-box', function() {
    var val = this.value;
    clearTimeout(to);
    to = setTimeout(function() {
        $('#countries').find('span').show();
        if (val) {

            $('#countries').find('span').hide();
            $('#countries').find('span[id^=' + val.toLowerCase() + ']').fadeIn('fast');

        }
    }, 500);
});

通常您会使用
clearTimeout
setTimeout
来触发真正的搜索

在keyup上,不要直接执行搜索,而是启动一个计时器,例如500毫秒后执行搜索

clearTimeout调用是停止在前一个keyup上启动的任何前一个计时器(对于键入的每个字母,您都会得到一个keyup事件)

例如:

var to;

$('#live-search').on('keyup', '#live-search-box', function() {
    var val = this.value;
    clearTimeout(to);
    to = setTimeout(function() {
        $('#countries').find('span').show();
        if (val) {

            $('#countries').find('span').hide();
            $('#countries').find('span[id^=' + val.toLowerCase() + ']').fadeIn('fast');

        }
    }, 500);
});

这是你想要的东西吗:是的,我想以前有人问过。我确实搜索过,但不确定字符串。我想这应该被标记为一个复制品。我只知道它的存在,因为我一周前需要它,并查看了我的收藏夹。这是否符合你的要求:是的,我想这是以前问过的。我确实搜索过,但不确定字符串。我想这应该被标记为一个复制品。我只知道它的存在,因为我一周前需要它,并查看了我的收藏夹。这是一把小提琴,它显示了你的答案:这不是一个坏主意。我认为这是一个方向,但我很高兴我在这一点上征求了第二个意见。@matchew看到了实现的细节。我是通过使用插入键盘插孔的条形码扫描仪了解到这一点的。扫描仪需要在扫描后按“返回”,但它不能。这里有一把小提琴,显示你的答案:这是个不错的主意。我认为这是一个方向,但我很高兴我在这一点上征求了第二个意见。@matchew看到了实现的细节。我是通过使用插入键盘插孔的条形码扫描仪了解到这一点的。扫描仪需要在扫描后按“返回”,但不能。