datatables mysql_jquery - Datatables - 数据表外的搜索框

这篇博客讨论如何在使用Datatables时将搜索框置于表格外部,如标题区域。作者提供了多种实现方法,包括使用DataTables API监听输入框的keyup事件来过滤表格数据,以及调整Datatables的配置选项来改变搜索框的位置。示例代码展示了如何在自定义的输入字段上应用过滤功能。
摘要由CSDN通过智能技术生成

jquery - Datatables - 数据表外的搜索框

我正在使用DataTables(datatables.net),我希望我的搜索框在表格之外(例如在我的标题div中)。

这可能吗 ?

11个解决方案

191 votes

您可以使用DataTables api过滤表。 所以你需要的只是你自己的输入字段,其中一个keyup事件触发了DataTables的过滤功能。 使用css或jquery,您可以隐藏/删除现有的搜索输入字段。 或者DataTables可能有删除/不包含它的设置。

在此查看Datatables API文档。

例:

HTML

JS

oTable = $('#myTable').DataTable(); //pay attention to capital D, which is mandatory to retrieve "api" datatables' object, as @Lionel said

$('#myInputTextField').keyup(function(){

oTable.search($(this).val()).draw() ;

})

netbrain answered 2019-07-28T13:51:03Z

31 votes

根据@lvkz评论:

如果你使用大写的数据表d .dataTable()(这将返回一个Datatable API对象)使用:

oTable.search($(this).val()).draw() ;

这是@netbrain的答案。

如果你使用小写的数据表d .dataTable()(这将返回一个jquery对象)使用这个:

oTable.fnFilter($(this).val());

zizoujab answered 2019-07-28T13:51:49Z

14 votes

您可以使用input选项。

在其自己的div中使用搜索输入默认:

sDom: 'lftip'

如果您使用jQuery UI(input设置为div):

sDom: 't'

以上将把搜索/过滤input元素放入它自己的div,其中一个名为search-box的类在实际表之外。

即使它使用其特殊的简写语法,它实际上可以使用你抛出的任何HTML。

mekwall answered 2019-07-28T13:52:44Z

8 votes

这个帮助我获得DataTables版本1.10.4,因为它的新API

var oTable = $('#myTable').DataTable();

$('#myInputTextField').keyup(function(){

oTable.search( $(this).val() ).draw();

})

cinnamonbear answered 2019-07-28T13:53:11Z

6 votes

更新的版本具有不同的语法:

var table = $('#example').DataTable();

// #myInput is a element

$('#myInput').on('keyup change', function () {

table.search(this.value).draw();

});

请注意,此示例使用在首次初始化数据表时分配的变量table。 如果您没有此变量,只需使用:

var table = $('#example').dataTable().api();

// #myInput is a element

$('#myInput').on('keyup change', function () {

table.search(this.value).draw();

});

自:DataTables 1.10

- 来源:[https://datatables.net/reference/api/search()]

Jonny answered 2019-07-28T13:54:00Z

4 votes

这应该适合你:(DataTables 1.10.7)

oTable = $('#myTable').dataTable();

$('#myInputTextField').on('keyup change', function(){

oTable.api().search($(this).val()).draw();

})

要么

oTable = $('#myTable').DataTable();

$('#myInputTextField').on('keyup change', function(){

oTable.search($(this).val()).draw();

})

Sky Yip answered 2019-07-28T13:54:27Z

3 votes

我有同样的问题。

我尝试了所有替代方案,但没有工作,我使用了一种不正确的方法,但它工作得很好。

示例搜索输入

jquery代码

$('#listingData').dataTable({

responsive: true,

"bFilter": true // show search input

});

$("#listingData_filter").addClass("hidden"); // hidden search input

$("#serachInput").on("input", function (e) {

e.preventDefault();

$('#listingData').DataTable().search($(this).val()).draw();

});

Bruno Ribeiro answered 2019-07-28T13:55:08Z

3 votes

我想在使用服务器端处理的情况下为@netbrain的答案添加一个更多的东西(请参阅serverSide选项)。

默认情况下由数据表执行的查询限制(请参阅searchDelay选项)不适用于.search() API调用。 您可以通过以下方式使用$ .fn.dataTable.util.throttle()来恢复它:

var table = $('#myTable').DataTable();

var search = $.fn.dataTable.util.throttle(

function(val) {

table.search(val).draw();

},

400 // Search delay in ms

);

$('#mySearchBox').keyup(function() {

search(this.value);

});

citxx answered 2019-07-28T13:55:40Z

1 votes

使用fnDrawCallback函数绘制表格时,可以移动div。

$("#myTable").dataTable({

"fnDrawCallback": function (oSettings) {

$(".dataTables_filter").each(function () {

$(this).appendTo($(this).parent().siblings(".panel-body"));

});

}

});

ebrown answered 2019-07-28T13:56:06Z

1 votes

$('#example').DataTable({

"bProcessing": true,

"bServerSide": true,

"sAjaxSource": "../admin/ajax/loadtransajax.php",

"fnServerParams": function (aoData) {

// Initialize your variables here

// I have assign the textbox value for "text_min_val"

var min_val = $("#min").val(); //push to the aoData

aoData.push({name: "text_min_val", value:min_val});

},

"fnCreatedRow": function (nRow, aData, iDataIndex) {

$(nRow).attr('id', 'tr_' + aData[0]);

$(nRow).attr('name', 'tr_' + aData[0]);

$(nRow).attr('min', 'tr_' + aData[0]);

$(nRow).attr('max', 'tr_' + aData[0]);

}

});

在loadtransajax.php,您可能会收到获得价值:

if ($_GET['text_min_val']){

$sWhere = "WHERE (";

$sWhere .= " t_group_no LIKE '%" . mysql_real_escape_string($_GET['text_min_val']) . "%' ";

$sWhere .= ')';

}

Senanayaka answered 2019-07-28T13:56:33Z

0 votes

如果您正在使用JQuery dataTable,那么您只需添加"bFilter":true。这将在表外显示默认搜索框,并且其动态工作..按预期

$("#archivedAssignments").dataTable({

"sPaginationType": "full_numbers",

"bFilter":true,

"sPageFirst": false,

"sPageLast": false,

"oLanguage": {

"oPaginate": {

"sPrevious": "<< previous",

"sNext" : "Next >>",

"sFirst": "<

"sLast": ">>"

}

},

"bJQueryUI": false,

"bLengthChange": false,

"bInfo":false,

"bSortable":true

});

Nikhil Thombare answered 2019-07-28T13:57:01Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值