我使用数据表对表格进行排序。 我的一些列包含货币数据。示例:
1 $
12 $
12 345 $
2 123 $
由于某些值中的空格,Datatables会考虑包含字符串的列,而不是数字,因此排序不正确 请参阅plunker:http://plnkr.co/edit/QU7lIK7pWUfyw6PU5a3H?p=preview
有没有办法让它正确排序这些数据?是的,如果可能的话,不必为每一列定义它,我有20个表,有很多货币列,我不想为每个表定义它,谢谢
非常感谢
答案 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的表格)
它的工作原理是删除空格并在比较值之前忽略$符号。至于“我不想为每个表定义它,谢谢”,好吧 - 恐怕你必须 - 用特殊措施对特殊数据进行排序有时需要特殊编码:)