当用户在输入框上输入东西的时候,下面自动显示出搜索结果来。但是我想的是当延迟一秒,判断用户还有没有继续输入或者删除的意愿再进行ajax调用模糊查询。
方案一:
fn为延时后执行的函数,delay为延时时间
1 debounce_return: function (fn, delay) { 2 var timer = null; 3 return function () { 4 var context = this; 5 var args = arguments; 6 clearTimeout(timer); 7 timer = setTimeout(function () { 8 fn.apply(context, args); 9 }, delay); 10 }; 11 }
方案二:
每次按下键盘,就设置一个定时器,如果用户再一次按下键盘,就清除上一次的定时器,并且重新设置一个。这样当最后用户没有再次按下键盘的时候,最后一个定时器不会被清除就会执行。
inputElement.onkeyup = function(){ var timer = null; return function(){ timer && clearTimeout(timer); timer = setTimeout(function(){ //延时执行的代码 }, delay); }; }