2016-04-04 18 views
3

数字を含むテキストボックスがあります。数字を入力するたびにカンマ「onblur」イベントを追加してフォーマットします。しかし、数字がすでにフォーマットされているときに数字を追加すると、カンマが正しい場所になく、時にはゼロが追加されます.1000000の形式を1,000,000に追加しますが、1,000,0002を追加または編集すると、 1000,0,002。カンマを数字に追加する

jQueryの

function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

$("#mytextbox").blur(function(){ 
     this.value = addCommas(this.value.replace(',', '')); 
    }); 
+0

[jQueryの数字にコンマを追加]の可能な複製(http://stackoverflow.com/questions/3883342/add-commas-to-a-number-in-j-ery) – RRK

答えて

2

replace(',', '')のみ空にするための最初のカンマを置き換えます。グローバルコンマを置き換える必要があります。このために、このライン

this.value = addCommas(this.value.replace(',', '')); 

を変更してみてください:私はtoLocaleString()を使用することをお勧め

this.value = addCommas(this.value.replace(/,/g, '')); 
0

。 addCommas関数全体を1行にすることができます。

parseInt(nStr.replace(/\D/g, '')).toLocaleString(); 

ここで何が起こっているのかを解説してください。最初に、数字以外の文字をすべてnStrから取り除き、''に置き換えます。これはカンマを取り除くよりも少し徹底的です。次に、parseInt()を使用して数字の文字列を数値に変換します。これにより、Numberプロトタイプに組み込まれている書式設定メソッドを使用することができます。最後に、Numberプロトタイプには、数字の言語に敏感な表現を含む文字列を返す関数toLocaleString()があります。デフォルトは米国英語ですが、必要に応じて別のロケールを指定することもできます。

関連する問題