创建dataTable时格式化货币

时间:2016-01-11 14:12:43

标签: javascript jquery datatable

var oTable = $('#table').dataTable({
    "bJQueryUI": true,
    "aaData": jsonList,
    "bPaginate": true,
    "aoColumns": [
        {
           "mDataProp": null,
           "sClass": "control center",
           "sDefaultContent": '<img src="http://i.imgur.com/SD7Dz.png">'
        },
        { "mDataProp": "ente" }, 
        { "mDataProp": "cup" }, 
        { "mDataProp": "decreto" }, 
        { "mDataProp": "data" }, 
        { "mDataProp": "importoImpegno" }, //this is a currency
        { "mDataProp": "finanziato" }, //this is a currency
        { "mDataProp": "importoPagato" }, //this is a currency
        { "mDataProp": "importoInPagamento" } //this is a currency  
    ],
    "aoColumnDefs": [
     { "sClass": "currency", "aTargets": [ 5, 6, 7, 8 ]}
     ],
    "oLanguage": {
        "sInfo": "_TOTAL_ entries"
    },
    "aaSorting": [[1, 'asc']]
});

如您所见,我只将.currency类添加到货币列中。 我需要格式化这种货币(例如3235到3.235,00),我已经有了这个功能。

function currencyFormatIT(num) {

    if(num != null && num != "") {
        num = parseFloat(num);
        num = num
        .toFixed(2)
        .replace(".", ",")
        .replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
    }
    else {
        num = "";
    }

    return num;
}

我尝试使用这种方法:

$("table.myTable > tbody td.currency").each(function(){
    $(this).html(currencyFormatIT($(this).html()));
    $(this).css("text-align", "right");
});

但是,它仅适用于数据表的首页中显示的行:

First page

从第二页开始不是:

Second page

如果我添加此代码:

$(document).on("click", "td.currency", function(){
    alert($(this).html());
});

适用于所有页面的所有页面!!

1)为什么? 2)如果我想像回调函数一样调用currencyFormatIT()函数(可能在我创建dataTable .dataTable({..的代码中我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用fnDrawCallback功能。

var oTable = $('#table').dataTable({

   "fnDrawCallback": function (oSettings) {
      // Format Currency here
    }

}

您可以查看documentation以获取有关可能的回调函数的更多详细信息。