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