0

1000 のようなにデータを入力する Web ページがある<input />ので、1,000 のように見せたいのですが、他の計算で同じ ID を使用しているため、表示される ID 値は変更されません。 NaNが表示されます...どうすればこれを回避できますか?

<input type="text" id="test" onBlur="addCommas()">
<script>
    function addCommas(nStr){
        var offset = nStr.length % 3;
        if (offset == 0)
            return nStr.substring(0, offset) + nStr.substring(offset).replace(/([0-9]{3})(?=[0-9]+)/g, "$1,");
        else
            return nStr.substring(0, offset) + nStr.substring(offset).replace(/([0-9]{3})/g,    ",$1");
    }
    alert(addCommas("1234567"));
</script>

フォーラムからこのコードを取得しました...入力ボックスに表示されるようにこの関数を単純にする方法を知っている人はいますか?しかし、ID値を取得すると1000と表示されますか?

4

1 に答える 1

0

これであなたの価値をテストしてください:

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

それはあなたのNANを防ぎます。

また、@Pete のリンクを使用して、JavaScript で桁区切り記号としてコンマを使用して数値を出力する方法を確認してください。

EDIT コメントについて : 次に、 a を使用し<input type="hidden" id="testValue" />て実際の値を格納できます。

したがって、コードは次のようになります。

<input type="text" id="test" onBlur="addCommas(this)">
<input type="hidden" id="testRealValue">
<script>
    function isNumber(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }
    function addCommas(input){
        nStr = input.value;
        if(!isNumber(nStr))return;
        document.getElementById("testRealValue").value = nStr;
        var offset = nStr.length % 3;
        if (offset == 0)
            input.value = nStr.substring(0, offset) + nStr.substring(offset).replace(/([0-9]{3})(?=[0-9]+)/g, "$1,");
        else
            input.value = nStr.substring(0, offset) + nStr.substring(offset).replace(/([0-9]{3})/g,    ",$1");
    }
</script>

ここにjsfiddleがあります

于 2013-04-25T09:10:55.820 に答える