我有一个价格字段和总金额字段: 价格字段的值为0.9999900或0.9000000总金额可以是10,000.00或1,000,000.00。我正在使用tablesorter库对表进行排序。
问题是如果我设置如下(总量排序工作正常)
s=s.replace(new RegExp(/[^0-9\/A-Za-z ]/g),"");
如果我设置如下(价格分类工作正常)
s=s.replace(new RegExp(/[^0-9\/A-Za-z. ]/g),"");
但是我不能让两者同时工作..我错过了什么:
ts.addParser({
id: "digit",
is: function(s,table) {
var c = table.config;
s=s.replace(new RegExp(/[^0-9\/A-Za-z ]/g),"");
return $.tablesorter.isDigit(s,c);
},
format: function(s) {
return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9\/A-Za-z ]/g),""));
},
type: "numeric"
});
答案 0 :(得分:1)
我找到了围绕不同专栏的工作:
1)我使两个列都指向了tablesorter中的不同函数,这样我就可以让价格和总金额以自己的方式工作。
在tablesorter下,我修改了标题以包含总金额列的数字和“总金额”列的数字。
headers: {8: { sorter: 'digit' },13: { sorter: 'thousands' }}
其中8,13是我桌上的列号。
2)对于“总金额”列号8,我使用了id:digits
3)对于“Price”第13列,我使用了自定义解析器ID:“千位”
两者的分类代码
id:“digit” - > Tablesorter库中的现有代码
ts.addParser({
id: "digit",
is: function(s,table) {
var c = table.config;
s=s.replace(new RegExp(/[^0-9\/A-Za-z ]/g),"");
return $.tablesorter.isDigit(s,c);
},
format: function(s) {
return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9\/A-Za-z ]/g),""));
},
type: "numeric"
});
id:'数千' - >自定义表格排序器已添加到tablesorter lib。
ts.addParser({
id: 'thousands',
is: function(s) {
return false;
},
format: function(s) {
return s.replace(new RegExp(/[^0-9\/A-Za-z. ]/g),"");
},
type: 'numeric'
});
$(function() {
$("table").tablesorter({
headers: {
6: {//zero-based column index
sorter:'thousands'
}
}
});
});