jQuery表排序和货币问题

时间:2011-11-11 01:17:10

标签: javascript jquery tablesorter

这个可能有点专业,但无论如何都要进行:

参考页面:http://greg-j.com/icvm/anticartel/search-results.html

插件供参考:http://tablesorter.com/

如果您查看“罚款总额”的最后两列,您会看到货币输出包括$ x.xxx十亿和$ x.xxx百万。内置货币解析器不考虑此格式。幸运的是,该插件允许您编写your own parser。但是,我没有到达任何地方,我希望我能从别人那里得到一些帮助。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

看看这是否有效,我还没有测试过:

$.tablesorter.addParser({ 
    id: 'monetary', 

    'is': function(s) { 
        return false; 
    }, 

    format: function(s) { 

        var i = s.split('$').join('');

        var suffixes = [
          {name:'thousand', mult: 1000},
          {name:'million', mult: 1000000},
          {name:'billion', mult: 1000000000},
          {name:'trillion', mult: 1000000000000}
        ]; 

        for (var j in suffixes) { 
          if (i.indexOf(' '+suffixes[j].name) != -1) {

              i = i.split(' '+suffixes[j].name).join('');

              val = parseFloat(i) * suffixes[j].mult;
          } 
        }

        return val; 
    },  

    type: 'numeric' 
}); 


$("#cartels").tablesorter({
    widgets: ['zebra'],
    sortList: [[0,0]], 
    headers: { 
        4: { 
            sorter:'monetary' 
        },
        5: { 
            sorter:'monetary' 
        }
    } 
});

答案 1 :(得分:1)

你能发布你尝试过的代码吗?

看起来他们在您发布的示例中所做的是为每个单词分配一个数字表示,然后按照这个排序:

return s.toLowerCase().replace(/good/,2).replace(/medium/,1).replace(/bad/,0);

所以在你的情况下,一种方法可能是用正确数量的零替换百万,而用十亿分别替换百万。因此,就解析器而言,基本上100万美元的评估结果为1,000,000美元。

return s.toLowerCase().replace(/million/,000000).replace(/billion/,000000000);

一旦评估了替换函数,s正在评估$1000000。 只是一个想法。不确定它是否有效,但它可能会让你走上正轨。