2013-07-13 57 views
18

我正在使用jQuery DataTables最新版本。我想在每個表格上使用單獨的列過濾器,因此我使用列過濾器插件,但只在頁腳中使用搜索框。我想放在標題中如何將DataTables列過濾器放在頂部

$(document).ready(function() { 
var oTable=$("#example").dataTable({ 
     "bJQueryUI": true, 
     "sScrollX": "100%", 
     "aLengthMenu": [[5, 15, 50, 100], [5, 15, 50, "l00"]], 
     "iDisplayLength": 10, 
     "sPaginationType": "full_numbers", 
     "sDom": '<"top"if>rt<"bottom"lp><"clear">' 

    }).columnFilter({"sPlaceHolder":"head :before", 
    "aoColumns": [{ "type": "text" }, { "type": "text" }, null, null, null, null, { "type": "text" }, null, { "type": "text" }, { "type": "text" }, { "type": "text" }, 

如何將它放在我的桌子上?

回答

31

方法1(CSS)

你可以在CSS改變

tfoot { 
    display: table-header-group; 
} 

方法2(JavaScript)的

將過濾行的東西到THEAD爲陣(不THS)和改變

$("tfoot input") 

$("thead input") 
+0

感謝您的回覆,但對不起我沒有得到第二種方法..可以簡要解釋.. – shan

+0

您可以使用最簡單的方法1。 http://datatables.net/release-datatables/examples/api/multi_filter.html會告訴你更多關於方法2 – asprin

+0

iam使用這個CSS,但它不工作.. – shan

16

您可以通過添加參數,將其移動到您的桌面頂部的 'sPlaceHolder'

}).columnFilter({ 
    sPlaceHolder: "head:after", 
    aoColumns: [ ... 
4

試試這個

$(document).ready(function() { 
$('#mytable thead td').each(function() { 
     var title = $('#mytable thead th').eq($(this).index()).text(); 
     $(this).html('<input type="text" placeholder="Search '+title+'" />'); 
}); 
$("#mytable thead input").on('keyup change', function() { 
     table 
      .column($(this).parent().index()+':visible') 
      .search(this.value) 
      .draw(); 
}); 
}); 
+0

謝謝..你節省了我的時間:) –

6

使用sPlaceHolder選項:

sPlaceHolder: "head:before" 

例如:

dataTable.columnFilter({ 
    sPlaceHolder: "head:before", 
    aoColumns: [ 
     { type: "select" }, 
     { type: "select" },   
     { type: "select" }, 
     { type: "select" }, 
     { type: "select" } 
    ] 
}); 

看到演示 - >http://jsfiddle.net/JNxj5/

7

只需使用下面的JavaScript代碼(這裏 '示例' 是你的表的id):

$('#example tfoot tr').insertAfter($('#example thead tr'))

4

在CSS你可以使用

display: table-header-group; //on tfoot

display: table-row-group; //on thead

,你會被他們定位是這樣的:

tfoot 
thead 
tbody 
+0

我有一個相關的問題,除了我想在頂部有'thead',在它下面的'tfoot'以及之後的其餘行。由於'thead'已經位於HTML的頂部,而'tfoot'剛剛位於它的後面,因此在'tfoot'元素上設置'display:table-row-group'可以很好地工作。現在它在Chrome和IE10上正確顯示。 – EdwinW

1
CSS: 
tfoot input { 
    width: 100%; 
    padding: 3px; 
    box-sizing: border-box; 
} 
tfoot { 
display: table-header-group;} 

Script: 
$(document).ready(function() { 
// Setup - add a text input to each footer cell 
$('#example tfoot th').each(function() { 
    var title = $(this).text(); 
    $(this).html('<input type="text" placeholder="Search '+title+'" />'); 
}); 

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

// Apply the search 
table.columns().every(function() { 
    var that = this; 

    $('input', this.footer()).on('keyup change', function() { 
     if (that.search() !== this.value) { 
      that 
       .search(this.value) 
       .draw(); 
     } 
    }); 
}); 

});

+0

請編輯您的答案,以解釋如何解決OP的問題,並解釋代碼的作用。在SO上不提供代碼的答案。謝謝! –

相關問題