DataTables 1.10.15:禁用内置搜索onKeyUp触发,改为按钮/回车触发
解决DataTables 1.10.15禁用实时keyup搜索,改为回车/按钮触发
当然可以实现!DataTables 1.10.15版本自带足够的灵活性来调整搜索触发逻辑,不用额外写复杂代码,几步就能搞定:
步骤1:禁用默认的实时keyup搜索
DataTables会给内置搜索框绑定一个带命名空间的keyup.dt事件,用来实时触发搜索。我们只需要解绑这个事件,就能阻止实时搜索的行为:
// 先初始化你的DataTable实例 var table = $('#yourTable').DataTable({ dom: 'lfrtip', // 确保包含'f'来显示内置搜索框 serverSide: true, ajax: '/你的数据接口地址', // 其他配置:列定义、分页设置等... }); // 解绑搜索框的默认keyup.dt事件,阻止实时搜索 $('div.dataTables_filter input').off('keyup.dt');
步骤2:添加回车键触发搜索
接下来给搜索框绑定自定义的keyup事件,仅在用户按下回车键时执行搜索请求:
$('div.dataTables_filter input').on('keyup', function(e) { // 检测是否按下回车键(keyCode为13) if (e.keyCode === 13) { // 执行搜索并重新绘制表格 table.search($(this).val()).draw(); } });
步骤3:可选添加搜索按钮触发
如果还需要支持点击按钮触发搜索,可以在搜索框旁边添加一个按钮,并绑定点击事件:
// 在搜索框容器后插入搜索按钮(可自定义样式) $('div.dataTables_filter').append('<button style="margin-left: 8px;" id="tableSearchBtn">搜索</button>'); // 绑定按钮点击事件 $('#tableSearchBtn').on('click', function() { var searchText = $('div.dataTables_filter input').val(); table.search(searchText).draw(); });
这样设置后,只有当用户按下回车键或者点击搜索按钮时,才会向服务器发送搜索请求,有效减少对繁忙服务器的请求量。
注意:如果你自定义了搜索框的位置,只需把选择器div.dataTables_filter input替换成你自己的输入框ID或类名即可。
内容的提问来源于stack exchange,提问作者Noam
相关产品推荐
相关产品推荐

