完成搜索事件的jQuery DataTable?

时间:2017-09-07 09:03:27

标签: jquery datatables

我想在用户搜索数据表时调用某些函数,包括当它们擦除搜索输入中的所有文本时(显示所有数据)。

我有以下代码:

$(tbl).on('order.dt search.dt',function() { urutkan_no(tbl); });

当用户在搜索输入中填写内容时成功触发,但是当它们删除所有文本时,事件将不再触发。

当用户清空搜索输入时(在显示整个数据之后)是否会触发任何DataTable事件?或者有任何解决方法吗?

更新

现在看来我知道发生了什么事。这是我的问题的示例代码。请试试这个:

var table = $('#example').DataTable({
});
var colors = ['red','blue','green','yellow','cyan','orange','limegreen','pink'];

$('#example').on('order.dt search.dt',function() {
    console.log('search', $('.dataTables_filter input').val());
    var random_color = colors[Math.floor(Math.random() * colors.length)];
    $('#example tbody').find('tr').each(function(i) {
        $(this).css('background-color',random_color);
        $(this).find('td:first').text(1+i);
    });
});

当数据表仍没有完成绘图时,过早地调用该函数。

小提琴: http://jsfiddle.net/a1z4533s/

1 个答案:

答案 0 :(得分:0)

根据this example in the documentation,您需要的是draw.dt事件:

var table = $('#example').DataTable();
var startTime;
table
.on( 'preDraw', function () {
   startTime = new Date().getTime();
} )
.on( 'draw.dt', function () {
    console.log( 'Redraw took at: '+(new Date().getTime()-startTime)+'mS' );
} );

编辑:我刚刚意识到,重新排序后也会触发此事件,可能这不是您想要的。但对我而言,这是无害的。