延迟Chosen.js搜索过滤器

时间:2016-06-28 21:38:03

标签: javascript jquery jquery-chosen

我使用selected.js进行多选下拉菜单,但是当我有一长串选项时,搜索过滤器会慢得无法忍受。

在输入的每个字母后面显示过滤器正在应用,因此我认为如果我可以禁用过滤器直到输入最少数量的字母或者经过一段时间后,我会更快最后一个关键输入。

我正在初始化我选择的下拉菜单:

$(".chzn-dynaselect").chosen({ width: '250px', search_contains: true });

我试图像这样延迟过滤器:

var timer = 0;
$('.search-field input').on('input', function () {
    if (timer) 
    {
        clearTimeout(timer);
    }
    timer = setTimeout(function () {
        $(".chzn-dynaselect").chosen().trigger("chosen:activate")
    }, 400);
});

此代码在输入时正确触发,但不会延迟过滤器。每个键盘后仍会触发过滤器。

有没有办法保留搜索框,但暂时关闭过滤器事件?

2 个答案:

答案 0 :(得分:0)

setTimeout第一个参数应该是一个函数(或一个字符串,请参阅setTimeout的文档)

timer = setTimeout(function () {
    $(".chzn-dynaselect").chosen().trigger("chosen:activate")
}, 400);

答案 1 :(得分:-1)

尝试_.debounce()而不是setTimeout()