2011-02-09 2 views
0

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

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

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 
Смежные вопросы