取消绑定和重新绑定DataTables搜索事件结果为空sSearch

取消绑定和重新绑定DataTables搜索事件结果为空sSearch,datatables,Datatables,这件事让我有点为难。我使用的是jQuery DataTables 1.10.6,我希望这样,当用户停止键入时(比如可能在950毫秒之后?),就会执行搜索。我有点让它工作,但由于我使用服务器端处理,sSearch(搜索参数)返回null 我猜这和解除绑定和重新绑定有关,但我不知道如何使sSearch正确发送 var delay = function () { var timer = 0; return function (callback, ms) { clearT

这件事让我有点为难。我使用的是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);
}

DataTables有一个se delay选项,您可以检查它

我发现了一个不推荐使用的插件,它是一个键debounce delay:

尽管有人说这不适用于1.10+,但有人评论说,行更改将允许它在1.10+中工作。因此,下面这句话:

anControl.unbind('keyup search input').bind('keyup search input', function() {
…将替换为:

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

我还可以在调用参数中设置过滤延迟计时器。工作起来很有魅力。

据我所知,searchDelay只有在你想节流而不是去盎司时才有用——这意味着searchDelay只会每n毫秒执行一次平局,不管你提供什么参数。我在寻找去Bouncing,延迟或限制在一定时间后调用draw(比如在一定时间后没有按键)。