jQuery中逗号格式的数字

时间:2011-02-09 06:54:10

标签: javascript jquery numbers

我在jQuery中有以下函数将数字格式化为逗号格式:

function CommaFormattedN(amount) {

    var delimiter = ","; 
    var i = parseInt(amount);

    if(isNaN(i)) { return ''; }

    i = Math.abs(i);

    var minus = '';
    if (i < 0) { minus = '-'; }

    var n = new String(i);
    var a = [];

    while(n.length > 3)
    {
        var nn = n.substr(n.length-3);
        a.unshift(nn);
        n = n.substr(0,n.length-3);
    }

    if (n.length > 0) { a.unshift(n); }

    n = a.join(delimiter);

    amount = minus + n;

    return amount;

}

我在

上调用这个函数
 $('.text_field1').bind("focus blur change keyup", function(){    
 var $el = $(this);
    $el.val(CommaFormattedN($el.val()));
});

它工作正常,但问题是,当数字位数从5增加时,它什么也没做。所有数字都将被删除,然后重新开始。

2 个答案:

答案 0 :(得分:5)

您可以使用Number.toLocaleString()函数将数字格式化为特定于语言环境的格式。请注意,该功能的输出因区域设置而异:

var n = parseInt("-123456789", 10);
console.log(n.toLocaleString())
// returns -123,456,789 on my computer (english-us locale)
// returns -123 456 789 for french locale
// returns -123.456.789 for german locale
// returns -123'456'789 for romansh (???) locale

答案 1 :(得分:2)

  1. 有一个与标志有关的错误。您使用的是绝对值而不是原始值。
  2. 您的代码似乎工作正常,您可以尝试调试您调用函数的方式。
  3. 这是您的工作代码,带有次要编辑(与标志相关): http://jsfiddle.net/qcVDc/1/