【问题标题】:how delay a function when i kepress in javascript?当我在javascript中按键时如何延迟功能?
【发布时间】:2013-03-09 08:04:24
【问题描述】:

我有一个搜索地点,当我输入它时开始搜索,这很好,但我希望当我按下输入时,功能在 2 秒后启动。

我正在使用setTimeout,但它不能正常工作。

我能做什么?

形式:

<form id="search" method="get">
  <input id="searchplace" type="text" size="40" value="" placeholder="xxxx" />
</form>

JavaScript

$("#search").keypress(function(event){
  if(event.keyCode == 13){
    $('.menu-bg').addClass('loading');      
    var x = $("#searchplace").val();

    setTimeout(m(),2000);

    function m(){
      $('.tabs').remove();
      window.location="search.php?page=noajax&q="+x;
      return false;
    };  
  }
});

【问题讨论】:

    标签: javascript jquery function settimeout delay


    【解决方案1】:

    您需要将处理程序引用传递给 setTimout 不需要调用处理程序。在m() 中,您正在重定向到其他页面?

    改变

    setTimeout(m(),2000);
    

    setTimeout(m,2000);
    

    还在事件按键之外定义 m()

    var x;
    $("#search").keypress(function(event){
    
      if(event.keyCode == 13){
    
         $('.menu-bg').addClass('loading');     
         x = $("#searchplace").val();
         setTimeout(m,2000);   
    
      }
    });
    
    function m(){
       $('.tabs').remove();
       window.location="search.php?page=noajax&q="+x;    
       return false;
    };
    

    【讨论】:

    • x 被定义为事件处理程序中的变量,因此在此处的 m 函数中未定义。
    【解决方案2】:

    试试这个

    setTimeout(m, 2000);
    

    没有()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2019-01-03
      • 2012-07-18
      相关资源
      最近更新 更多