0

我有一个 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('.');
}

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

4

4 回答 4

1

工作演示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));

如果你想要插件: -插件

于 2013-07-26T07:19:41.953 回答
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     
    })
    
于 2013-07-26T06:35:44.923 回答
0

有很多方法:

  1. 您可以将货币值包装在一个<span class='money'></span>跨度内,然后使用 jQuery 格式化这些值,在DOM ready.
  2. 使用 Angular JS,你可以给你的货币价值一个指令,比如说ng-money并定义那个指令,以便它格式化那个跨度的内容。
  3. 第三种方法是发送已经commified 的货币值(正如您提到的 :D ),并直接在您的模板中使用它们。通常在服务器端,格式化数字和值更容易。
于 2013-07-26T06:03:46.897 回答
0

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

这里有几行代码。小提琴也有联系

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);
        }
    }
};
于 2013-07-26T10:17:49.807 回答