Comma-formated numbers in jQuery

烂漫一生 提交于 2019-12-24 22:24:08

问题


I have following function in jQuery to format the number into comma-formatted:

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;

}

I am calling this function like this on

 $('.text_field1').bind("focus blur change keyup", function(){    
 var $el = $(this);
    $el.val(CommaFormattedN($el.val()));
});

It's working fine, but the problem is, when number of digits increase from 5, it makes nothing. All digits are deleted and it starts again.


回答1:


  1. There is a bug related to sign. You are using absolute value instead of original one.
  2. Your code seems to work fine, you can try debugging the way you are calling your function.

Here is your working code with minor edit ( sign related ) : http://jsfiddle.net/qcVDc/1/




回答2:


You can use Number.toLocaleString() function to format a number into a locale specific format. Note that the output of the function varies with regional settings:

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


来源:https://stackoverflow.com/questions/4942103/comma-formated-numbers-in-jquery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!