2012-12-28 77 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 –

相關問題