我有一个数据表,我正在尝试使用包含逗号的过滤器字符串过滤行。
这是数据表中的一行:
User logged in from 1.1.1.1, agent Mozilla/2.0
当我尝试使用1.1.1.1
进行过滤时,搜索结果中会出现上述行。但是,当我尝试使用1.1.1.1,
进行过滤时,它失败了,并且没有出现上面的行。
我尝试enabling/disabling
正则表达式、智能过滤等无济于事。
更新:
这是我用于过滤的代码:
this.$('.table-filter-field').on('input.my_datatable', function filterListener() {
$($(this).data('table')).dataTable().fnFilter(this.value);
});
如果他们comma (,)
没有将您的字符串搜索分解到行中,那么您可能使用的搜索正则表达式响应不佳,您可以检查以下代码,该代码适用于我的许多行数据搜索项目。
$('#search_field').keyup(function () { // Search field keyup event.you can use other event instead.
var rex = new RegExp($(this).val(), 'i');
$('.yourtable tbody tr').hide();
$('.yourtable tbody tr').filter(function () {
return rex.test($(this).text());
}).show();
})
粗体标签是阻止搜索工作的原因。
请参阅此 SO 问题:使用自定义 sType 从过滤器中删除 HTML 标签
我在这个小提琴中使用上面的方法:https://jsfiddle.net/98Lecvx2/13/
这是密钥代码:
"aoColumnDefs": [
{ "aTargets": [0],
"mRender": function ( data, type, full ) {
if (type === 'filter') {
return data.replace(/(<([^>]+)>)/ig,"");
}
return data;
}
}
]
请注意,编写代码时只适用于第一列。 我添加了另一行,其中第一列和第二列翻转(因此第二列中有1.1.1.1),并且它没有与过滤器一起显示。 如果你的所有列都有 HTML,并且需要忽略所有 HTML,则需要aTargets
字符串来包含所有这些列 -[0,1]
在小提琴中。