【问题标题】:Comma-formated numbers in jQueryjQuery 中的逗号格式数字
【发布时间】:2011-02-09 06:54:09
【问题描述】:

我在 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 增加时,它什么也没有。所有数字都被删除并重新开始。

【问题讨论】:

    标签: javascript jquery numbers


    【解决方案1】:

    您可以使用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
    

    【讨论】:

      【解决方案2】:
      1. 存在与符号相关的错误。您使用的是绝对值而不是原始值。
      2. 您的代码似乎运行良好,您可以尝试调试调用函数的方式。

      这是您的工作代码,稍作修改(与符号相关): http://jsfiddle.net/qcVDc/1/

      【讨论】:

        猜你喜欢
        • 2011-12-28
        • 2012-12-14
        • 1970-01-01
        • 2020-07-31
        • 2014-05-31
        • 2020-12-18
        • 2017-12-09
        • 2011-11-08
        • 1970-01-01
        相关资源
        最近更新 更多