我在页面中使用了大量HTML 5输入控件。我的要求之一是拥有一个带货币功能的文本框。为此,我尝试了这个:
<input type="number" pattern="(d{3})([.])(d{2})" />
这允许我输入类似10,000.00的值
但仍然不能满足我的所有要求。如果用户键入10000,我想要 它应该将其转换为10,000 onblur等货币格式。
当我在我的Javascript中读取输入类型的值时,它应该给我一个浮点数而不是一个字符串值,我无法在没有解析的情况下计算它。
答案 0 :(得分:22)
以下是其他input type="text"
的解决方法:
HTML
<input type="text" id="userinput" pattern="[0-9]*">
<br>
<input type="number" id="number">
JS
document.getElementById("userinput").onblur =function (){
//number-format the user input
this.value = parseFloat(this.value.replace(/,/g, ""))
.toFixed(2)
.toString()
.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
//set the numeric value to a number input
document.getElementById("number").value = this.value.replace(/,/g, "")
}
正则表达式来自How to print a number with commas as thousands separators in JavaScript
答案 1 :(得分:2)
试试这个 - http://jsbin.com/azOSayA/1/edit
function commaSeparateNumber(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
$('#elementID').focusout(function(){
alert(commaSeparateNumber($(this).val()));
});