我正在使用jquery datatable sort插件来对货币进行排序。但是这个插件都没有为我工作。
列中的数据类型为:
$5,871
$385.58
$430
$1,308.60
如果列中没有','且没有“$”,则排序正常。其他明智的排序并不像预期的那样。
示例:排序输出我得到(当排序desc时)
$890.54
$5.49
$5,871
$2,548.50
输出应该是:
$5,871
$2,548.50
$890.54
$5.49
我尝试过:数字逗号,货币,标题数字排序来对这些值进行排序。
如果我删除$和,则从这些值中对它们进行正确排序。
尝试:
排序输出总是与上面相同:
还有一个问题的调整:
对于我们没有任何货币的列,它表示为“---”:
实施例
$5,871
$2,548.50
$890.54
---
---
$5.49
答案 0 :(得分:1)
为什么不建立自己的扩展,它非常简单
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"currency-pre": function(a) {
//EDIT: To Accommodate for the "---" columns, use this
return a.indexOf('--') > -1 ? -1 : a.replace(/\$|,/g, '').trim();
},
"currency-asc": function(a, b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"currency-desc": function(a, b) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
});
然后确保设置&#39; s&#39;到货币&#39;
答案 1 :(得分:1)
使用以下代码。它应该与&#39; $&#39;标志也是。您不需要删除$ sign。
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"currency-pre": function (a) {
a = (a === "-") ? 0 : a.replace(/[^\d\-\.]/g, "");
return parseFloat(a);
},
"currency-asc": function (a, b) {
return a - b;
},
"currency-desc": function (a, b) {
return b - a;
}
});
// Initialize datatable
$('#datatableID').dataTable({
'aoColumns': [
{ 'sType': 'currency' }],