使用大型数据集进行过滤

时间:2013-06-09 12:28:42

标签: javascript jquery sqlite

我有一个包含大约10,000条记录的大型数据集。我希望能够在这个数据集上有一个过滤机制。这基本上在字段上执行LIKE sql表达式并返回匹配的结果。

为此,我使用JQuery将我的过滤器文本框中的“input”事件绑定到我的过滤器处理函数。

目前的问题是,如果在文本框中一次按下一个键加载,那么过滤器函数会被多次调用,从而使许多SQL调用过滤效率非常低。

当用户完成输入或者某段时间有差距并且只是执行过滤时,有没有办法在我的处理程序中检测到?所以我只在一次加载字符时才进行一次数据库调用。如果字符输入缓慢,我希望每次都能过滤。

干杯。

1 个答案:

答案 0 :(得分:0)

以下是一种方法jsfiddle

var test = 0;

$('body').on('keyup','input',function(){
    var val = $.trim($(this).val());  
    test++;

    if(val !== ""){
      doSomething(test);
    }
});

function doSomething(t){

    setTimeout(function(){
        if(t === test){
           //Place to Call the other Function or just do sql stuff
           alert($.trim($('input').val()));
        }
    },500);
}

如果用户输入了另一个字母,则有一个要测试的全局变量。并且setTimeout函数等待500ms以查看它们是否输入了另一个字母。

我确信有更好的方法可以做到这一点,但这可能会让你开始。