Числа в запятых в jQuery - PullRequest
       0

Числа в запятых в jQuery

0 голосов
/ 09 февраля 2011

У меня есть следующая функция в 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 ]

5 голосов
/ 09 февраля 2011

Вы можете использовать функцию 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 голосов
/ 09 февраля 2011
  1. Существует ошибка, связанная со знаком. Вы используете абсолютное значение вместо исходного.
  2. Ваш код работает нормально, вы можете попробовать отладить способ вызова вашей функции.

Вот ваш рабочий код с незначительным редактированием (связанный со знаком): http://jsfiddle.net/qcVDc/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...