2012-11-17 45 views
0

我想添加一個功能到我的搜索功能,它會在觸發鍵控事件後n秒鐘執行搜索。這個想法是,如果有人停止嘗試一秒左右,他們將不必點擊搜索按鈕。到目前爲止,我點擊搜索功能,刪除詞條,然後輸入。我在下面的代碼中標記了我想要定時器的地方。我問這是因爲它已經快到凌晨3點了,JavaScript正在傷害我的腦袋。很抱歉,如果重複...JavaScript/jQuery - 關鍵點和超時後觸發事件

這是我有:

$("#filter").keyup(function(e) 
{ 
    var filter = $("#filter").val(); 

    if(filter == 0 || filter == '' || filter == null) 
    { 
    test(); 
    } 
    else 
    { 
    *********** timer, then test(); 
    } 

    if (e.which == 13) 
    { 
    e.preventDefault(); 
    test(); 
    } 
}); 

回答

2
$("#filter").keyup(function(e) { 

    var filter = $("#filter").val(), 
     timer = $('#filter').data('timeout'), 
     n = 2;// the number of seconds to wait 

    if(timer) { 
     clearTimeout(timer); 
     $('#filter').removeData('timeout'); 
    } 

    if(filter == 0 || filter == '' || filter == null) { 
    test(); 
    } else if (e.which == 13) { 
    e.preventDefault(); 
    test(); 
    } else { 
    $('#filter').data('timeout', setTimeout(test, 1000 * n)); 
    }  
}); 
+0

gion_13爲贏!謝謝! –

+0

看到更新,我已經清理了'clearTimeout'調用後的'data('timeout')'。 –

+0

太棒了,添加到代碼中,謝謝! –