我对这个有点腌渍。我使用的是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);
}
答案 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() {
我还能够在调用参数中设置过滤延迟计时器。像魅力一样。