2012-12-28 76 views
12

我使用以下函数按照用户键入的格式设置数字格式。它会每3个数字插入一个逗号。例如:45696.36变成45,696.36jQuery函数使用逗号和小数格式化数字

但是,我遇到了一个问题。如果小数点后的数字长于3位数,则开始向它们添加逗号。例如:1136.6696变成1,136.6,696

这是我的函数:

$.fn.digits = function(){ 
    return this.each(function() { 
    $(this).val($(this).val().replace(/[^0-9.-]/g, '')); 
    $(this).val($(this).val().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
} 

我怎样才能解决这个问题,因此停止小数点后放置逗号?我正在使用jQuery 1.8。谢谢!

+0

方式更好的解决方法:http://stackoverflow.com/a/1867641 9/21838 – Pyrolistical

回答

39

你可以通过在“.”性格分裂的字符串,然后只在首节进行您的逗号转换,做到这一点是这样的:

function ReplaceNumberWithCommas(yourNumber) { 
    //Seperates the components of the number 
    var n= yourNumber.toString().split("."); 
    //Comma-fies the first part 
    n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
    //Combines the two sections 
    return n.join("."); 
} 

ReplaceNumberWithCommas(1136.6696); //yields 1,136.6696 

Example

+0

dang这是一个很好的正则表达式。上次我解决了这个问题后,我最终拆分了字符串_again_以将其反转,将逗号插入到数组中,然后重新加入。 – Mathletics

+0

完美运作。谢谢! – Jeff

+0

如果使用货币 - 这不总是有小数 - 将yourNumber = yourNumber.toFixed(2)添加到开始设置它始终显示小数,即使他们是0 –

相关问题