javascript - "OR"过滤器 `fnFilter` ,数据表

标签 javascript jquery datatables

我需要调用fnFilter方法来使用“OR”运算的过滤功能来过滤第一列。 喜欢

 thisObj.dataTable.fnFilter(keywordsArray,0);//TODO, OR FILTER

我将有一个像 ["P1","P2"] 这样的数组,它代表我需要过滤掉的产品代码。

假设我的表包含产品代码 P1,P2,P3 行,当我传递 ["P1", "P2"] 数组时,我需要查看前两行。

最佳答案

您可以使用$.fn.dataTableExt.afnFiltering来代替。以下函数适用于 1.9.x 和 1.10.x 版本:

//a general filtering function taking an array of values
function filter(values, colIndex, match) {
    $.fn.dataTableExt.afnFiltering.push(
        function(settings, data, dataIndex) {
            for (i=0;i<values.length;i++) {
                if (match) {
                    if (data[colIndex] == values[i]) return true;
                } else {
                    if (data[colIndex].indexOf(values[i])>=0) return true;
                }     
            }
            return false;
        }     
    );
    table.fnDraw();
    $.fn.dataTableExt.afnFiltering.pop();
}

通过按钮激活,在第 3 列上进行完全匹配的过滤:

$("#filter").click(function() {
    filter( ['1.7', '1.8'], 3, true );
});

对于问题,调用filter(keywordsArray, 0);

1.9.x 演示 -> http://jsfiddle.net/uu7gcwvf/
1.10.x 演示(相同的代码,不同的库)-> http://jsfiddle.net/hrm97wd0/

如果你想制作一个纯 1.10.x DataTable() 过滤器:

function filter(values, colIndex, match) {
    $.fn.dataTable.ext.search.push(
        function(settings, data, dataIndex) {
            for (i=0;i<values.length;i++) {
                if (match) {
                    if (data[colIndex] == values[i]) return true;
                } else {
                    if (data[colIndex].indexOf(values[i])>=0) return true;
                }     
            }
            return false;
        }     
    );
    table.draw();
    $.fn.dataTable.ext.search.pop();
}

演示 -> http://jsfiddle.net/qgjjafeu/

关于javascript - "OR"过滤器 `fnFilter` ,数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30299033/

相关文章:

javascript - 跨浏览器方法确定选择的 anchor 标记会导致文本区域模糊

javascript - 填充 Google 自定义搜索引擎

javascript - 旋转 div 从左侧位置偏移顶部位置

javascript - 随机选择没有重复项的数组项而不删除项(JavaScript)

jquery - 多个选择器不适用于上下文

javascript - 将类应用于 javascript 数据表中的每一行

用于替换文本箭头的 Javascript 正则表达式 -> <-

javascript - 如果事先没有alert(),DataTables 不会转换 HTML 表

javascript - 单击 '+add' 会使 addRow 对话框多次触发

javascript - Firefox 没有正确选择 contenteditable 文本