0

我有一个网页,我在其中输入数据<input />,比如 1000 所以我希望它看起来像 1,000 但它不会改变它只是显示的 ID 值,因为我在其他计算中使用相同的 ID 所以如果 1,000 那么它会显示 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 中以逗号作为千位分隔符打印数字

编辑关于您的评论:然后您可以使用 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 回答