我正在设计一个数据表表,以满足一组特定的标准。
不幸的是,这似乎是DataTables中两个相互矛盾的需求。
此代码允许将搜索栏限制为第一列,
numCols = $("#myTable thead tr:first th").length
columns = [{ "searchable": true }]
for (var i=1; i < numCols; i++) {
columns.push({ "searchable": false });
}
var table = $('#myTable').DataTable({
"paging": false,
"columns":columns
});但是,当使用column.search()时,这段代码:
$("#myTable thead tr:first th").each( function ( i ) {
if ($(this).hasClass("filter")) {
var select = $('<select name="select_column_'+i+'"><option value="">ALL</option></select>')
.appendTo( $(this).empty() )
.on( 'change', function () {
table.column(i)
.search( $(this).val(),false,false,false)
.draw();
} );
table.column( i ).data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d.replace(/[[\]\/()]/g,'\\$&')+'">'+d+'</option>' )
});
}
});现在,我知道我已经在表的searchable声明中将columns设置为false,删除它可以让下拉列表再次工作-但这意味着搜索文本框会过滤所有列上的表,而不仅仅是第一列。
遗留文档说,有一个bFilterable选项做了一个simialr的事情,但这不再是在当前的版本。现在我已经没有主意了。
因此,是否有一种方法可以限制数据表,使搜索框只在一个列上筛选,同时允许对其他列进行基于下拉的筛选?
PS:对于好奇的人来说,这里的jsFiddle非常清楚地显示了这个问题。
发布于 2014-09-04 05:37:56
事实证明,使用标准的Datatables是不可能的,但是使用jQuery可以扩展表来管理这个表。
首先,保留对将要搜索的每一列的搜索(因此不包括列上的任何searching选项。
然后,通过删除选项标志,使用f旋转筛选框。
然后在表本身之前创建一个自定义搜索框:
$('<input type="text" />')
.insertBefore('#myTable')
.before('<label>My special search: </label>')
.on( 'keyup change', function () {
table
.column( 0 )
.search( this.value )
.draw();
});这将搜索仅应用于第0列。不过,这行
.column( 0 )可以更改为匹配任意列中的字符串,如下所示:
.columns(0,1,2)也可以用于匹配搜索字符串位于所有给定列中的行,如下所示:
.column([0,1,2])这里有很多演示这个的小摆设,所以你可以看到
查看功能差异的最好示例字符串是an。
https://stackoverflow.com/questions/25656655
复制相似问题