【问题标题】:How to insert commas in numbers in an html template?如何在 html 模板中的数字中插入逗号?
【发布时间】:2013-07-26 05:59:13
【问题描述】:

我有一个 html 模板,我想创建一个泛化函数,它自己会在我的模板中找到所有数字,并在每 3 位数字后插入逗号。目前我正在使用这个函数,它可以将一些值作为输入来将其转换为逗号分隔的形式。

function commafy( num ) {
    var str = num.toString().split('.');
    if (str[0].length >= 5) {
        str[0] = str[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
    }
    if (str[1] && str[1].length >= 5) {
        str[1] = str[1].replace(/(\d{3})/g, '$1 ');
    }
    return str.join('.');
}

我的模板包含标签、表格和输入字段。
请帮助我,我该怎么做?

【问题讨论】:

  • 您能否更具体地说明您的 html 标记的外观,以便为您的问题提出解决方案

标签: javascript jquery regex


【解决方案1】:
  1. 如果模板知道数字在哪里,只需为它们放置一个类。渲染模板后,一起选择并更改数字。注意:有一个名为 format_currency 的 jquery 插件。

  2. 如果模板不知道,请在渲染完成后执行:

    $('#TEMPLATE_CONTAINER input,#TEMPLATE_CONTAINER label,#TEMPLATE_CONTAINER td').each(function(){          
        FORMAT($(this));//format only if $(this).text() is a number     
    })
    

【讨论】:

    【解决方案2】:

    工作演示http://jsfiddle.net/cse_tushar/P3CSF/

    你可以使用这个很棒的功能来格式化数字

    例如

    var num=123456789.12345
    num.formatMoney(5) //returns 123,456,789.12345 
    num.formatMoney(2) //returns 123,456,789.12
    

    功能代码在这里:-

    Number.prototype.formatMoney = function(c, d, t){
    var n = this, 
        c = isNaN(c = Math.abs(c)) ? 2 : c, 
        d = d == undefined ? "." : d, 
        t = t == undefined ? "," : t, 
        s = n < 0 ? "-" : "", 
        i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
        j = (j = i.length) > 3 ? j % 3 : 0;
       return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
     };
    
    console.log((123456789.12345).formatMoney(5, '.', ','));
    console.log((123456789.12345).formatMoney(2));
    

    如果你想要插件:- Plugins

    【讨论】:

      【解决方案3】:

      有很多方法:

      1. 您可以将货币值包装在 &lt;span class='money'&gt;&lt;/span&gt; 范围内,然后在 DOM ready 上使用 jQuery 格式化这些值。
      2. 使用 Angular JS,您可以为您的货币价值指定一个指令,例如 ng-money,并定义该指令以格式化该跨度的内容。
      3. 第三种方法是发送已经 commified 的货币值(正如您提到的 :D ),并直接在您的模板中使用它们。通常在服务器端,格式化数字和值更容易。

      【讨论】:

        【解决方案4】:

        我有一个可能按照您想要的方式工作的解决方案。这只是我对问题的理解。

        这里有几行代码。小提琴也是linked

        var formatedNumbers=function(){
            count=document.getElementsByTagName('input').length;
        
            for(i=0;i<count;i++){
                if(!isNaN(document.getElementsByTagName('input')[i].value) && document.getElementsByTagName('input')[i].value!=""){
                    document.getElementsByTagName('input')[i].value=formatNumber(document.getElementsByTagName('input')[i].value);
                }
            }
        };
        

        【讨论】:

        • 这为零失败 - 尝试输入 1000000
        猜你喜欢
        • 2023-03-11
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 2011-08-20
        • 2020-11-18
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        相关资源
        最近更新 更多