我有一个包含大约10,000条记录的大型数据集。我希望能够在这个数据集上有一个过滤机制。这基本上在字段上执行LIKE sql表达式并返回匹配的结果。
为此,我使用JQuery将我的过滤器文本框中的“input”事件绑定到我的过滤器处理函数。
目前的问题是,如果在文本框中一次按下一个键加载,那么过滤器函数会被多次调用,从而使许多SQL调用过滤效率非常低。
当用户完成输入或者某段时间有差距并且只是执行过滤时,有没有办法在我的处理程序中检测到?所以我只在一次加载字符时才进行一次数据库调用。如果字符输入缓慢,我希望每次都能过滤。
干杯。
答案 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以查看它们是否输入了另一个字母。
我确信有更好的方法可以做到这一点,但这可能会让你开始。