我正在使用Datatables Version 1.10.12和jquery-1.11.1
我的货币栏没有正确排序,下面是我用来排序的代码
$(document).ready( function () {
$('#notSoCoolGrid').DataTable({
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
columnDefs: [{ type: 'currency', targets: 1 }],
"aaSorting": [[ 2, 'asc' ]]
} );
} );
我收到如下所示的货币栏。请注意括号()被视为负数
($ 75.00)美元
($ 108.87)美元
($ 249.44)美元
($ 1,000.00)美元
£899.00 GBP
$ 905.00 AUD
£830.65 GBP
$ 825.00 USD
£59.67 GBP
答案 0 :(得分:1)
使用brackets-negative排序插件。您的代码可以保持不变,您只需要包含额外的JS文件//cdn.datatables.net/plug-ins/1.10.13/sorting/brackets-negative.js
。
答案 1 :(得分:0)
以下是我最终的结果,我也要考虑汇率。
<link href="datatables/1.10.13/css/jquery.dataTable.min.css" type="text/css" rel="stylesheet" />
<script src="js/jQuery/1.11.1/jquery.js"></script>
<script src="datatables/1.10.13/js/jquery.dataTables.js"></script>
<script>
$(document).ready( function () {
var currencies = { GBP: 1.2403, AUD: 0.7364, USD: 1 };
$.fn.dataTable.ext.type.order['currencies-pre'] = function(d) {
var sign = /\([^)]*\)/.test(d)?-1:1;
var currency = currencies[d.match(/USD|GBP|AUD/).pop()]; // /!\ all MUST have currency
var n = d.replace(/[^\d.]/g,"");
console.log(sign * n * currency);
return sign * n * currency;
};
$('#notSoCoolGrid').DataTable({
"aoColumns": [{ sWidth: "10%", bSearchable: false, bSortable: false }, { sWidth: "90%", bSearchable: false, bSortable: true }],
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
"columnDefs": [{ type: 'currencies', targets: 1 }],
"aaSorting": [[ 1, 'asc' ]]
});
});
</script>