0

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

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

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

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

干杯。

4

1 回答 1

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

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

于 2013-06-09T14:58:16.800 回答