HTML 5货币格式

时间:2013-08-19 07:53:33

标签: javascript html5

我在页面中使用了大量HTML 5输入控件。我的要求之一是拥有一个带货币功能的文本框。为此,我尝试了这个:

<input type="number" pattern="(d{3})([.])(d{2})" />

这允许我输入类似10,000.00的值

但仍然不能满足我的所有要求。如果用户键入10000,我想要  它应该将其转换为10,000 onblur等货币格式。

当我在我的Javascript中读取输入类型的值时,它应该给我一个浮点数而不是一个字符串值,我无法在没有解析的情况下计算它。

2 个答案:

答案 0 :(得分:22)

以下是其他input type="text"的解决方法:

http://jsfiddle.net/UEVv6/2/

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()));
});