如何在html网页的textfield中添加逗号

时间:2013-04-25 09:02:46

标签: javascript html input webpage

我有一个网页,其中我将数据输入<input />,如1000,所以我希望它看起来像1000,但它不会改变它只显示的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?

1 个答案:

答案 0 :(得分:0)

使用this测试您的价值:

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

它会阻止你的NAN。

并使用@ Pete的link to know how to print a number with commas as thousands separators in JavaScript

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