2012-12-28 27 views
12

次の関数を使用して、ユーザータイプとして数値を書式設定しています。 3つの数字ごとにカンマを挿入します。例:45696.3645,696.36になります。カンマと小数で数字を書式化するjQuery関数

しかし、私は問題に遭遇しました。小数点以下の数字が3桁を超える場合は、カンマを追加し始めます。例:1136.66961,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

ダグは良い正規表現です。私が最後にこの問題を解決したとき、_again_という文字列を分割して逆にして、コンマを配列に挿入して、再び参加しました。 – Mathletics

+0

それは完全に機能しました。ありがとう! – Jeff

+0

通貨でこれを使用する場合 - 必ずしも小数点以下はありません - yourNumber = yourNumber.toFixed(2)を先頭に追加すると、0であっても小数点を常に表示するように設定します –

1

私が使用しますaccounting.js lib:

accounting.format(1136.6696, 4) // 1,136.6696 
関連する問題