gpt4 book ai didi

jQuery 数据表 'OR' 搜索/过滤

转载 作者:行者123 更新时间:2023-12-03 22:13:07 25 4
gpt4 key购买 nike

我正在使用 jQuery DataTables ( http://www.datatables.net/ ) 来显示一些表格数据。搜索/过滤器是一个强大的功能。尽管如果在表中搜索多个关键字,搜索只会过滤已经过滤的数据。

例如此处的示例 - http://jsfiddle.net/illuminatus/2j0Lz5or/1/

如果像 10 99 那样搜索关键字,则不会产生任何结果。我希望搜索显示包含搜索或输入的所有关键字的所有结果/行。

搜索 10 99 将显示第 1、5 和 6 行。

从技术上讲,搜索应该是“OR”搜索。

非常感谢任何帮助。

编辑:搜索应该是“OR”搜索。

最佳答案

AND-过滤器(包括存在所有搜索词的行)。这个custom filter覆盖内置过滤过程。每行中的每一列都会与每个搜索词进行比较。

$.fn.dataTableExt.afnFiltering.push(
function(oSettings, aData, iDataIndex) {
var keywords = $(".dataTables_filter input").val().split(' ');
var matches = 0;
for (var k=0; k<keywords.length; k++) {
var keyword = keywords[k];
for (var col=0; col<aData.length; col++) {
if (aData[col].indexOf(keyword)>-1) {
matches++;
break;
}
}
}
return matches == keywords.length;
}
);

fork fiddle -> http://jsfiddle.net/9d097s4a/

<小时/>

OR-过滤器(包括至少存在一个搜索词的行)。这是另一种方法,主要是试图简化 this answer多于。默认过滤事件不是使用 oSearch 和硬编码搜索词,而是替换为标记搜索短语的事件,然后执行高级 fnFilter()。作为可选实验,现在仅当用户点击 enter 时才执行搜索 - 感觉更自然。

var input = $(".dataTables_filter input");
input.unbind('keyup search input').bind('keypress', function (e) {
if (e.which == 13) {
var keywords = input.val().split(' '), filter ='';
for (var i=0; i<keywords.length; i++) {
filter = (filter!=='') ? filter+'|'+keywords[i] : keywords[i];
}
dataTable.fnFilter(filter, null, true, false, true, true);
// ^ Treat as regular expression or not
}
});

查看演示 -> http://jsfiddle.net/2p8sa9ww/

关于jQuery 数据表 'OR' 搜索/过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25382569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com