解绑和重新绑定DataTables搜索事件会导致null sSearch

时间:2016-01-21 22:27:25

标签: datatables

我对这个有点腌渍。我使用的是jQuery DataTables 1.10.6,我想让它在用户停止输入时(比如可能在950毫秒后?)进行搜索。我有点工作,但由于我使用服务器端处理,sSearch(搜索参数)返回null。

我猜测它与取消绑定和重新绑定有关,但我不知道如何制作它以便正确发送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);
}

2 个答案:

答案 0 :(得分:0)

DataTables有一个延迟选项,您可以查看它here

答案 1 :(得分:0)

我发现了一个已弃用的插件,这是一个关键的去抖延迟:https://www.datatables.net/plug-ins/api/fnSetFilteringDelay

虽然它表示这不能与1.10+一起工作,但是有一条评论说明换行将允许它在1.10+中工作。所以以下一行:

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

......将替换为:

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

我还能够在调用参数中设置过滤延迟计时器。像魅力一样。