DataTables自定义检测插件和排序顺序

时间:2015-06-26 08:59:29

标签: javascript jquery regex datatables

我试图在Datatables上实现一个必须查找表数据的函数,做一个正则表达式然后,如果它返回true,那么,当我点击标题对数据进行排序时,它会排序它由最后5位数字组成,忽略了字符串开头出现的字母。

我有以下代码

$.fn.dataTable.ext.oSort['custom'] = function (settings, col) {
    return this.api().column(col, {order: 'index'}).nodes().map(function (td, i) {
        var string= $(td).html();
        return $.trim(string.substr(string.length - 4));
    });
}


$.fn.dataTable.ext.type.detect.push(
    function (value) {
        var test = (/PT\d/).test(value);
        return test ? 'custom' : null;
    }
);

这是针对自定义数据,其中包含大量垃圾,如国家/地区代码和内容,但数据顺序仅为最后5位数。

我一直在搜索,我很难理解和调试。调试检测工作,如果1发出警报,当我用我想要的值击中列时它给我真实,但是自定义排序不起作用,有人可以帮忙吗?

希望我能清楚

感谢

1 个答案:

答案 0 :(得分:1)

actualy i solved it myself.

the problem was that DataTables needs to make the entire column return true, so, if the regex fails in any value in the same column it fails.

$.fn.dataTable.ext.type.detect.unshift(
    function (d) {
        var pt = (/^PT\d/).test(d);
        var es= (/^ES\d/).test(d);
        var en= (/^EN\d/).test(d);
        if (pt || es|| en) {
            return 'custom'
        } else {
            return false;
        }
    }
);

$.fn.dataTable.ext.type.order['custom-pre'] = function (string) {
    return $.trim(string.substr(string.length - 4));
};

so this is my last code used and it works just fine.

i'm posting it so anybody with the same problem can have a clue to solve some future problem :)