jQuery 数据表 - 排序货币格式不起作用

jQuery dataTables - Sorting currency format not working

我正在使用 Datatables 对我的 tables 进行排序。 我的一些专栏包含货币数据。示例:

1 $
12 $
12 345 $
2 123 $

由于某些值中的 space,Datatable 认为包含字符串的列,而不是数字,因此排序不正确 见 plunker : http://plnkr.co/edit/QU7lIK7pWUfyw6PU5a3H?p=preview

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

非常感谢

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

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]}
   ]
}); 

演示 -> http://jsfiddle.net/8kez8mvy/(来自你的 plnkr 的 table)

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