按Enter键时取消即时搜索

时间:2014-11-23 23:36:19

标签: javascript jquery html

问题

在1200(jQuery超时)的间隔之后,在页面的html中有一个超时函数ajax,并且直到用户在超时完成之前或之后按下Enter键并且html为页面被不必要地调用两次。

我正在使用的代码

该函数调用了输入的onkeyup

 var timeoutReference;
 function instant(){
 var val=some filters;
   if(val!=''){
        if(timeoutReference)clearTimeout(timeoutReference);timeoutReference=setTimeout(function(){
                ajaxHTML();
        },1200);
   }
  }

在输入

时调用相同的功能
$(document).on('keypress',function(e){
    if(e.keyCode==13){
        ajaxHTML(); 
    }
});

问题

如果在此之前按下Enter键,我可以添加什么来停止超时功能,或者如何防止同一个HTML文档被调用两次?感谢

1 个答案:

答案 0 :(得分:0)

您已经发布了所需的所有代码。只需在用户按下Enter键时清除计时器,这将阻止回调被触发。

if(e.keyCode==13){
    clearTimeout(timeoutReference);
    ajaxHTML(); 
}

目前,当用户按下回车键时,您的代码会调用ajaxHTML(),但可能已排队等候通过setTimeout设置的instant()进行调用 - 结果为您比方说,在两个AJAX调用中。