2016-01-21 47 views
0

我對這個有點不解。我正在使用jQuery DataTables 1.10.6,並且我想讓它在用戶停止輸入時(比如可能在950毫秒之後?)執行搜索。我有種工作,但由於我使用服務器端處理,sSearch(搜索參數)返回null。取消綁定和重新綁定DataTables搜索事件結果爲空sSearch

我猜它與解除綁定和重新綁定有關,但我不知道如何讓sSearch正確發送。

var delay = function() { 
    var timer = 0; 
    return function (callback, ms) { 
     clearTimeout(timer); 
     timer = setTimeout(callback, ms); 
    } 
})(); 

$("div.dataTables_filter input").unbind(); 
$("div.dataTables_filter input").bind("keyup", function() { 
    alert(this.value); 
    delay(function() { 
     $("#MyTable").dataTable().fnFilter(this.value);}, 1000); 
} 

回答

0

我發現了一個過時插件,它是一個關鍵的反彈延時:https://www.datatables.net/plug-ins/api/fnSetFilteringDelay

即使它說,這不會與1.10+一起工作,有一條評論指出,換行可以讓它工作在1.10+以上。所以下面一行:

anControl.off('keyup search input').on('keyup search input', function() { 

我也可以設置過濾延時定時器在調用參數:

anControl.unbind('keyup search input').bind('keyup search input', function() { 

...將被替換。奇蹟般有效。

0

數據表有一個選項,以本身的延遲,你可以檢查它here

+1

根據我的理解,searchDelay只有在您想要調節而不是去抖時纔有用 - 這意味着searchDelay只會在每nms執行一次繪製,無論您提供哪個參數。我一直在尋找解決方案,在經過一段時間後延遲或限制平局的召喚(如在一段時間後沒有按鍵)。 –

相關問題