我正在使用 DataTables (datatables.net),我希望将搜索框放在表格之外(例如在我的标题 div 中)。
这是否可能?
这是否可能?
<input type="text" id="myInputTextField">
JavaScript
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() ;
})
根据 @lvkz 的评论:
如果您使用带有大写字母 D 的 datatable .DataTable()
(这将返回一个 Datatable API 对象),请使用以下代码:
oTable.search($(this).val()).draw() ;
这是@netbrain的答案。
如果您使用小写字母d的datatable .dataTable()
(这将返回一个jQuery对象),请使用以下内容:
oTable.fnFilter($(this).val());
.DataTable()
时,使用oTable.search($(this).val()).draw();
当你使用.dataTable()
时,使用oTable.fnFilter($(this).val());
区别在于D的大小写。希望能帮到你! - LvkzoTable.api().search($(this).val()).draw();
这非常有用,特别是如果你想手动控制分页的长度:
oTable.api().page.len($(this).val()).draw();
- GhissDom
选项来实现此功能。sDom: '<"search-box"r>lftip'
bjQueryUI
设置为true
):sDom: '<"search-box"r><"H"lf>t<"F"ip>'
'<"search-box"r><"H"lf>t<"F"ip>'
不确定是否存在更糟糕的东西。 - Cristian E.language: { search: "example", searchPlaceholder: "example" }
- Flimm对于最近和新版本的DataTables,您应该按照以下步骤操作:
1- searching
选项必须为true
。
2- 隐藏默认搜索输入:
.dataTables_filter {
display: none;
}
3- 添加新的搜索输入:
<input type="text" id="search">
4- 请求搜索:
$('#search').keyup(function() {
var table = $('.table-meetups').DataTable();
table.search($(this).val()).draw();
});
这个对我在DataTables 1.10.4版本上很有帮助,因为它有新的API
var oTable = $('#myTable').DataTable();
$('#myInputTextField').keyup(function(){
oTable.search( $(this).val() ).draw();
})
我遇到了同样的问题。
我尝试了所有发布的替代方案,但都无效。最终我使用了一种不正当的方法,但它完美地解决了问题。
示例搜索输入
<input id="searchInput" type="text">
$('#listingData').dataTable({
responsive: true,
"bFilter": true // show search input
});
$("#listingData_filter").addClass("hidden"); // hidden search input
$("#searchInput").on("input", function (e) {
e.preventDefault();
$('#listingData').DataTable().search($(this).val()).draw();
});
更近期的版本有不同的语法:
var table = $('#example').DataTable();
// #myInput is a <input type="text"> element
$('#myInput').on('keyup change', function () {
table.search(this.value).draw();
});
table
。如果您没有此变量可用,只需使用以下内容即可:var table = $('#example').dataTable().api();
// #myInput is a <input type="text"> element
$('#myInput').on('keyup change', function () {
table.search(this.value).draw();
});
自:DataTables 1.10
.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);
});
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();
})
$('#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
中,您可能会收到get值:if ($_GET['text_min_val']){
$sWhere = "WHERE (";
$sWhere .= " t_group_no LIKE '%" . mysql_real_escape_string($_GET['text_min_val']) . "%' ";
$sWhere .= ')';
}
keyup
事件中,我尝试了大约一个小时来使用$(".dataTables_filter :input").focus().val(value).keypress();
,直到发现了这个。从未想过使用 API.. 真是一种优雅的解决方案! - MattSizzle