2015-01-21 3 views
0

Я хочу преобразовать формат результата в валюту. JSФормат результата JS в формате валюты

$(function(){ 
    function credit (selector) { 
     $(selector).each(function() { 
      var total = 0, 
      column = $(this).siblings(selector).andSelf().index(this); 
      $(this).parents().prevUntil(':has(' + selector + ')').each(function() { 
       total += parseFloat($('td.credit:eq(' + column + ')', this).html()) || 0; 
      }) 
      $(this).html(total); 
     }); 
    } 
    credit('td.creditsubtotal'); 
    credit('td.credittotal'); 
    }); 

Результат показать в классе тега. Я хочу, чтобы он отображался в формате валюты. Например. $ Х, xxx.xx ($ 1,234.56)

http://jsfiddle.net/2c6p928x/

+0

без каких-либо значений трудно предположить, можете ли вы добавить это в jsfiddle или опубликовать свой html со значениями? каков ваш результат в настоящее время? – atmd

+0

прилагается jsfiddle –

ответ

1

Что-то вроде этого следует сделать трюк:

$(function(){ 
function credit (selector) { 
    $(selector).each(function() { 
     var total = 0, 
     formattedTotal, numCredit, strCredit 
     column = $(this).siblings(selector).andSelf().index(this); 
     $(this).parents().prevUntil(':has(' + selector + ')').each(function() { 
       strCredit = $('td.credit:eq(' + column + ')', this).html() || ""; 
       console.log(strCredit); 
       numCredit = Number(strCredit.replace(/[^0-9\.]+/g,"")); 
       console.log(numCredit); 
       total += parseFloat(numCredit) || 0; 
     }) 
     formattedTotal = total.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'); 
     $(this).html('$'+formattedTotal); 
    }); 
} 
credit('td.creditsubtotal'); 
credit('td.credittotal'); 

});

JSFiddle

+0

Ваш код работает отлично. Еще одна вещь? Этот код работает только тогда, когда теги имеют номера. Как заставить его работать, если он имеет префикс типа «$». Функция sum не работает, когда у меня есть префикс. Как мне заставить работать. –

+0

Как игнорировать символы и принимать только цифры в теге ? –

+0

Я обновил ответ, включив в него часть, которая разбивает нечисловые символы в строке. – chridam

1

Вы можете использовать Numeral.js библиотеку.

Это пример, как форматировать переменную total в формате валюты:

$(this).html(numeral(total).format('$0,0.00')); 

Это только 3k, но поддерживает множество различных форматов и имеет локализаций.

Смежные вопросы