【问题标题】:Format JS result into Currency Format将 JS 结果格式化为货币格式
【发布时间】:2015-03-20 03:50:02
【问题描述】:

我想将结果的格式转换为货币。 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');
    });

结果显示在类标签中。我希望它以货币格式显示。例如。 $ x,xxx.xx ($ 1,234.56)

http://jsfiddle.net/2c6p928x/

【问题讨论】:

  • 如果没有很难建议的值,您可以将其添加到 jsfiddle 或发布带有值的 html 吗?你目前的输出是什么?
  • 附上jsfiddle

标签: javascript php html format currency


【解决方案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

【讨论】:

  • 您的代码运行良好。还有一件事?此代码仅在 标记有数字时有效。如果它有像​​ "$" 这样的前缀,我如何让它工作。当我有前缀时,sum 函数不起作用。我如何让它发挥作用。
  • 如何忽略字符,只取标签中的数字?
  • 我已经更新了答案以包括去除字符串中非数字字符的部分。
  • 您是否测试过数字超过 $1,000,000.00 的代码?
  • 工作顺利。非常感谢!!
【解决方案2】:

您可以使用Numeral.js 库。

这是一个例子,如何将total变量格式化为货币格式:

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

它只有 3k,但支持多种不同格式并具有本地化功能。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签