我试图在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发出警报,当我用我想要的值击中列时它给我真实,但是自定义排序不起作用,有人可以帮忙吗?
希望我能清楚
感谢
答案 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 :)