DataTables自定义检测plug-in和排序顺序

DataTables custom detection plug-in and sorting order

我正在尝试在 Datatables 上实现一个函数,该函数必须查找 table 数据,执行正则表达式,然后,如果 returns 为真,则,当我点击 header 对数据进行排序时,它将按最后 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 发出警报,当它以我想要的值命中列时它 gives-me 为真,但自定义排序不起作用,有人可以帮忙吗?

希望我说清楚了

谢谢

其实是我自己解决的

问题是 DataTables 需要使整个列 return 为真,因此,如果正则表达式在同一列中的任何值中失败,它就会失败。

$.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));
};

所以这是我最后一次使用的代码,它工作得很好。

我发布它是为了让遇到同样问题的任何人都能找到解决未来问题的线索:)