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");
});
Но это работает только со строкой, которая появляется в первой странице из DataTable:
Со второй страницы не далее:
Если добавить этот код:
$(document).on("click", "td.currency", function(){
alert($(this).html());
});
работает для всех тд всей страницы !!
1) Почему? 2) Если я хочу вызвать currencyFormatIT() функции, как функции обратного вызова (возможно, в коде, где я создаю DataTable .dataTable({..
, как я мог сделать?
Хорошо, но что мне передать в функцию currencyFormatIT()? Как я могу сказать ему: «Вызовите валютуFormatIT() для каждого td с валютой класса»? – Dave
Works . Но currencyFormatIT(), теперь, вызывается каждый раз, когда я изменить страницу или сортировать столбцы. И это неправильно. Есть функция обратного вызова, которая вызывается только один раз? – Dave
@ DavideFruci это не то, что вы хотите? При изменении страницы необходимо форматировать валюту для новых данных на этой странице. Но если вы хотите просто вызвать его один раз, вы можете использовать функцию fnInitCallback. –