0

私は、ユーザー入力文字列がコンマ区切り文字を持つように多数をフォーマットするために入力するときに、ユーザー入力文字列を調整する問題に対して提案された各ソリューションを調べることに時間を費やしました。

9999999999->9,999,999,999など。

スタックオーバーフローについては、ここでいくつかの議論があります。

JavaScriptで千単位の区切り文字としてコンマを使用して数値を出力する方法

千単位の区切り文字としてコンマを追加(javascript)-代わりに出力が削除されます

そして、さらに多くの関連するクエリ、私が見つけたものをテストしました、そしてそれらは4または5の累乗までの数に対してうまく機能しました、例えば12,345はうまく出てきます、

ただし、数値が大きいと、コンマが多すぎます。

1 ,,,,, 0 ,,, 0 ,,, 000

たとえば、私が現在実装しているコードの出力です。(また、バックスペースをキーストロークとして登録するため、3回バックスペースすると、コンマが追加されます...)

function numberWithCommas(n){
    var s=n.split('.')[1];
    (s) ? s="."+s : s="";
    n=n.split('.')[0]
    while(n.length>3){
        s=","+n.substr(n.length-3,3)+s;
        n=n.substr(0,n.length-3)
    }
    return n+s
}

そして入力で:

onkeyup="this.value=numberWithCommas(this.value);"

関数を間違って使用していますか?それとも、それは単に大きな数では実行可能ではありませんか。任意のサイズの数値で機能するように調整する方法はありますか?

前もって感謝します

4

1 に答える 1

1

最初の反復後にすでにコンマとして設定されている値にコンマを追加しているだけです...関数の先頭でコンマをリセットする必要がありますnumberWithCommas

n = n.replace(/,/g, "");
于 2012-11-29T22:24:54.037 に答える