tablesorter格式化数字与逗号和数字之间没有它们的问题

时间:2012-11-19 17:59:50

标签: jquery tablesorter

我有一个价格字段和总金额字段: 价格字段的值为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"
});

1 个答案:

答案 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'
            }
        }
    });
});