【问题标题】:Filtering with large dataset过滤大型数据集
【发布时间】:2013-06-09 12:28:41
【问题描述】:

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

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

目前的问题是,如果在文本框中一次按下大量键,则过滤器函数会被多次调用,从而对过滤器进行多次 SQL 调用,这是非常低效的。

有没有一种方法可以在我的处理程序中检测到用户何时完成输入或当有一段时间的间隙时才执行过滤?因此,当大量字符一次输入时,我只进行一次数据库调用。如果字符输入缓慢,我希望每次都能过滤。

干杯。

【问题讨论】:

    标签: javascript jquery sqlite


    【解决方案1】:

    这是一种方法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 函数会等待 500 毫秒,看看他们是否确实输入了另一个字母。

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

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2010-12-02
      • 2022-10-01
      • 2016-10-16
      • 1970-01-01
      • 2020-03-25
      • 2020-01-26
      • 2012-09-04
      • 2019-03-22
      相关资源
      最近更新 更多