回答
您可以使用DataTables API來過濾表格。所以你所需要的只是你自己的輸入字段和一個觸發DataTables的過濾函數的keyup事件。使用CSS或jQuery,你可以隱藏/刪除現有的搜索輸入字段。或者,也許DataTables有一個設置來刪除/不包含它。
簽出關於此的Datatables API文檔。
例子:
HTML
<input type="text" id="myInputTextField">
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() ;
})
您可以使用此sDom
選項。
與搜索輸入默認在自己的div:
sDom: '<"search-box"r>lftip'
如果你使用jQuery UI(bjQueryUI
設置爲true
):
sDom: '<"search-box"r><"H"lf>t<"F"ip>'
以上將把搜索/將input
元素過濾到它自己的div
中,該類別名稱爲search-box
,該類別位於實際表格之外。
即使它使用其特殊的速記語法,它實際上也可以使用任何HTML。
當使用fnDrawCallback
函數繪製表格時,您可以移動div。
$("#myTable").dataTable({
"fnDrawCallback": function (oSettings) {
$(".dataTables_filter").each(function() {
$(this).appendTo($(this).parent().siblings(".panel-body"));
});
}
});
或者如果您使用更新版本的數據表,您將擁有:''drawCallback「:函數(設置)$(」。dataTables_filter「)。each(function(){(0){ $這個).appendTo($(this).parent()。siblings(「。panel-body」)); }); },' – 2015-10-20 20:52:08
這一個幫助我的數據表1.10.4版本,因爲它的新的API
var oTable = $('#myTable').DataTable();
$('#myInputTextField').keyup(function(){
oTable.search($(this).val()).draw();
})
請注意「var oTable = $('#myTable')。DataTable();」 (https://www.datatables.net/faqs/#api) – Lionel 2015-03-30 07:30:08
按@lvkz評論:
如果你正在使用的數據表與大寫d .DataTable()
(此將返回一個Datatable API對象)使用這個:
oTable.search($(this).val()).draw() ;
這是@n etbrain回答。
如果你正在使用的數據表與小寫字母d .dataTable()
(這將返回一個jQuery對象)使用此:
oTable.fnFilter($(this).val());
'oTable.fnFilter($(this).val());'也爲我工作, – shabeer90 2015-03-20 16:04:11
這兩種方法都是有效的,這取決於你打電話的方式數據表: 'oTable.search($(this).val())。draw();'你在調用時使用:'.DataTable()' 和這個: 'oTable.fnFilter($這個).val());'當你使用'.dataTable()' 區別在於首都D.希望它有幫助! – Lvkz 2015-08-05 20:45:22
給出「oTable.fnFilter不是函數」的數據表版本錯誤1.10.5 – 2016-03-24 12:20:08
$('#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 .= ')';
}
如果您使用的是JQuery數據表,那麼您只需添加"bFilter":true
即可。這將顯示默認的搜索框外的表和它的作品dynamically..as每預計
$("#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
});
問題是要改變動態創建的位置。把它放在桌子外面 – 2016-01-25 09:25:02
這對您來說應該是工作:(數據表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();
})
更新版本的語法不同:
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();
});
因爲:數據表1.10
我有同樣的問題。
我嘗試了所有替代方法發佈,但沒有工作,我用了一種不正確的方式,但它的工作完美。
實例搜索輸入
<input id="serachInput" type="text">
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();
});
我想一件事添加到您使用服務器端處理的情況下,相關的@netbrain's answer(見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);
});
- 1. jQuery Datatables搜索文本框
- 2. Serverside Datatables搜索框樣式
- 3. 數據表搜索框
- 4. 如何使用jQuery DataTables的外部搜索框
- 5. DataTables!=搜索
- 6. DataTables Ajax搜索
- 7. Jquery Datatables表。表格邊框外的數據
- 8. jQuery dataTables - 停止通配符搜索數據表中的選擇框
- 9. Jquery數據表:篩選器/搜索基於表外的選擇框
- 10. datatables列搜索框不顯示
- 11. datatables按鈕和搜索框位置
- 12. 數據表搜索列
- 13. datatables搜索選項
- 14. Datatables單列搜索
- 15. 從外部輸入MVC jQuery數據表搜索
- 16. 多列搜索數據表
- 17. 顯示兩個搜索框和分頁數據的數據表
- 18. 數據表通過選擇輸入搜索+刪除實際搜索框
- 19. 數據表搜索框不工作
- 20. Datatables搜索點擊的div
- 21. 更新數據表搜索
- 22. 將搜索框添加到ASP.Net動態數據列表頁面
- 23. 使用Datatables搜索多個表
- 24. 數據加載後搜索數據表
- 25. 搜索數據表
- 26. 搜索數據表
- 27. 數據庫搜索框
- 28. 改變我想改變搜索框的外觀搜索框
- 29. jQuery Datatables只搜索一列
- 30. jquery datatables選擇搜索
感謝您的解決方案! – 2011-05-13 10:54:58
你應該肯定使用.keyup而不是.keypress,否則你會遇到延遲結果 – 2013-09-11 15:38:10
我把'$(「。dataTables_filter:input」)。focus().val(value).keypress(); '在我的輸入中'鍵入'大約一個小時,然後才發現這一點。永遠不要使用API ..優雅的解決方案! – MattSizzle 2014-05-03 23:00:45