【发布时间】:2015-11-05 15:05:01
【问题描述】:
JSBin:http://live.datatables.net/nujehixu/3/edit?js,console,output
$(document).ready( function () {
// push our custom filter onto the stack of filters
$.fn.dataTable.ext.search.push(function(settings, searchData, index, rowData, counter) {
// get filter value
var value = $("#example_filter > label > input").val().toLowerCase();
// check filter value against original row data
var original = rowData[1].toLowerCase();
console.log(original);
return original.indexOf(value) > -1;
});
function addEllipsis(original, charLimit) {
if (original.length > charLimit) {
// substring the original and add ellipsis with a title attribute of the original
return '<div title="' + original + '">' + original.substr(0, charLimit) + '…' + '</div>';
}
// return the original value since it is already short enough
return '<div title="' + original + '">' + original + '</div>';
}
var table = $('#example').DataTable({
columnDefs: [
{
targets: 1,
render: function (data, type, row) {
// render with ellipsis if necessary
return addEllipsis(data, 6);
}
}
]
});
} );
查看链接的示例,我正在尝试使用基于原始行数据的自定义过滤器,但在输入 systems 之类的过滤器值时会出现问题。当我希望 systems 匹配“系统管理员”并显示这些行时,系统管理员的行被过滤掉了。
阅读source,看起来有一个global filter首先应用于搜索字符串,即compiled from the rendered values。
有人找到解决办法了吗?
【问题讨论】:
-
过滤错误是什么意思?
-
@OlaviSau,我的意思是我希望系统匹配系统管理员并显示该行,但事实并非如此。我将进行编辑以使其更清楚。
-
@JayTaggart - 已将代码编辑到问题中。您确实应该在问题中包含一些代码,尤其是当问题是关于某些特定代码不起作用时。链接无法帮助未来的访问者识别问题,没有人可以确定您的链接会在 3 天、3 个月或 3 年后持续存在或过期。
-
@davidkonrad,有道理,谢谢。
标签: javascript datatables