下面提到了数据表网站上提到的所有列的选择选项的功能。如何使其仅在第一列的下拉值上过滤表格数据,并将选择下拉列表放在其他位置,而不是通常的标题部分。see link for example
initComplete: function () {
var api = this.api();
api.column().indexes().flatten().each( function (i) {
var column = api.column(i);
var select = $('<select><option value=""></option></select>').appendTo('$selectTriggerFilter').on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex($(this).val());
column.search( val ? '^'+val+'$' : '', true, false ).draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
我正在使用以下代码。一旦我删除了dom选项,就会出现选择选项,但不会没有dom。
$(document).ready(function() {
$('#tableTrigger').DataTable({
"lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "All"] ],
searching: false,
"scrollY": "200px",
"dom": 'frtipS',
"deferRender": true,
initComplete: function ()
{
var api = this.api();
api.columns().indexes().flatten().each( function ( i )
{
if(i == 0){ //Create just one SelectBox
var select = $('<select class='+i+'><option value=""></option></select>')
.appendTo( '#selectTriggerFilter')
.on( 'change', function () {
var val = $(this).val();
column( i ).search( val ? '^'+$(this).val()+'$' : val, true, false ).draw();
});
column( i ).data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' );
} );
}
else return;
});
}
});
});
答案 0 :(得分:2)
<强>原因强>
您的代码存在一些问题:
searching
不应设置为false
,否则search()
功能将无效column
变量未定义<强>解强>
以下是更正后的代码。
$(document).ready(function() {
$('#tableTrigger').DataTable({
"lengthMenu": [
[10, 25, 50, 100, -1],
[10, 25, 50, 100, "All"]
],
"scrollY": "200px",
"dom": 'rtipS',
// searching: false,
"deferRender": true,
initComplete: function () {
var column = this.api().column(0);
var select = $('<select class="filter"><option value=""></option></select>')
.appendTo('#selectTriggerFilter')
.on('change', function () {
var val = $(this).val();
column.search(val ? '^' + $(this).val() + '$' : val, true, false).draw();
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>');
});
}
});
});
备注强>
我在f
中省略了"dom": 'frtipS'
,因为我认为您最初要将searching
设置为false
来排除该问题。如果您想将搜索框与下拉过滤器一起使用,请添加f
。
如果您在lengthMenu
财产中省略l
,则设置dom
没有任何意义。
<强>样本强>
请参阅this jsFiddle以了解更正后的代码。
答案 1 :(得分:-1)
您可以将搜索部分放在dom的任何位置。然后你的事件调用(点击,选择,键盘)。如下所示打电话给serach api。
var dTable= $("example").DataTable();
dTable.columns(i).search(v).draw();
这里我是你的数据表列索引,v是搜索值。