我有一个网页,其中我将数据输入<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?
答案 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