5

示例小提琴

我有一个 html 表:

_A_B_C_D_
|0|1|0|1|
|0|1|0|0|
|1|0|0|1|

我想过滤非零列。使用 jQuery dataTables(不是硬性要求,正是我目前使用的)我执行以下过滤器:

// value is the column index, true simply informs the filter method to use regex
dataTable.fnFilter("[^0]", value, true); 

但是,过滤多个列会创建一个AND过滤器。因此:

dataTable.fnFilter("[^0]", 0 /*A*/, true); 
dataTable.fnFilter("[^0]", 3 /*D*/, true); 

将创建以下

_A_B_C_D_
|1|0|0|1|

我需要OR行为,但这会创建下表:

_A_B_C_D_
|0|1|0|1|
|1|0|0|1|

其中A 列非零 D 列非零。我想不出任何方法可以用我目前的结构来实现这一点。

如何使用与 AND 相对的 OR 逻辑过滤表列?

4

2 回答 2

4

使用您的小提琴作为模型,我对其进行了更新以提供我认为您想要的功能。

每次单击复选框时,我都会扩展 dataTables 过滤:

$.fn.dataTableExt.afnFiltering.push(
    function (settings, data, index) {
        var s = [0, 3, 5]; // columns to filter
        for (var i=0; i < s.length; i++) {
            if (data[s[i]] != 0) return true;
        }
        return false;
    }
);

完全集成到小提琴中:链接

于 2013-03-27T17:01:08.153 回答
0

以防万一您可能需要将该功能包装到某些用户界面中,您可以查看这个 DataTables 插件,除了传统的“与”逻辑之外,您还可以应用“或”过滤。

于 2019-02-07T10:16:50.230 回答