2013-03-09 61 views
-2

我有一個搜索的地方,當我輸入它開始搜索,它是好的,但我希望當我按下輸入功能2秒後開始。當我在javascript中按下時如何延遲一個函數?

我正在使用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; 
    }; 
    } 
}); 

回答

7

您需要通過處理器參考setTimout不需要調用處理程序。在m()你正在重定向到其他頁面?

變化

setTimeout(m(),2000); 

setTimeout(m,2000); 

還要定義米()外事件按鍵

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; 
}; 
+0

沒有這dosnt工作... – pencilvania 2013-03-09 08:08:18

+0

'x'被定義爲事件處理程序,以便將在這裏'M'功能是不確定裏面的變量。 – steveukx 2013-03-09 08:15:47

+0

謝謝@steveukx,更新了我的答案。 – Adil 2013-03-09 08:18:40

1

嘗試此

setTimeout(m, 2000); 

沒有()