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 定义它,谢谢”,好吧 - 恐怕你必须 - 用特殊措施对特殊数据进行排序有时需要特殊编码:)
我正在使用 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 定义它,谢谢”,好吧 - 恐怕你必须 - 用特殊措施对特殊数据进行排序有时需要特殊编码:)