jQuery dataTables - 排序货币格式不起作用

时间:2015-04-15 13:23:29

标签: jquery jquery-datatables

我使用数据表对表格进行排序。 我的一些列包含货币数据。示例:

1 $
12 $
12 345 $
2 123 $

由于某些值中的空格,Datatables会考虑包含字符串的列,而不是数字,因此排序不正确 请参阅plunker:http://plnkr.co/edit/QU7lIK7pWUfyw6PU5a3H?p=preview

有没有办法让它正确排序这些数据?是的,如果可能的话,不必为每一列定义它,我有20个表,有很多货币列,我不想为每个表定义它,谢谢

非常感谢

1 个答案:

答案 0 :(得分:2)

您需要自己创建一个足够的插件。默认排序算法无法处理格式错误或没有典型内容。但这很容易。以下插件正确对您的特殊货币进行排序:

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    "my-currency-pre": function(a) {
        return parseFloat(a.replace(/ /gi, ''));
    },
    "my-currency-asc": function(a,b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "my-currency-desc": function(a,b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

用法:

var table = $('#example').dataTable({
   "aoColumnDefs": [
      {"sType": "my-currency", "aTargets": [0]}
   ]
}); 

演示 - &gt; http://jsfiddle.net/8kez8mvy/ (来自您的plnkr的表格)

它的工作原理是删除空格并在比较值之前忽略$符号。至于“我不想为每个表定义它,谢谢”,好吧 - 恐怕你必须 - 用特殊措施对特殊数据进行排序有时需要特殊编码:)