使html数字输入始终显示2位小数

Cri*_*ano 38 html

我正在创建一个表单,用户可以使用html数字输入标记输入美元金额.有没有办法让输入框始终显示2位小数?

Gro*_*oot 47

因此,如果其他人偶然发现这是一个解决此问题的JavaScript解决方案:

第1步:将HTML数字输入框挂钩到一个onchange事件

myHTMLNumberInput.onchange = setTwoNumberDecimal;
Run Code Online (Sandbox Code Playgroud)

或者在html代码中,如果你愿意的话

<input type="number" onchange="setTwoNumberDecimal" min="0" max="10" step="0.25" value="0.00" />
Run Code Online (Sandbox Code Playgroud)

第2步:编写setTwoDecimalPlace方法

function setTwoNumberDecimal(event) {
    this.value = parseFloat(this.value).toFixed(2);
}
Run Code Online (Sandbox Code Playgroud)

toFixed如果您愿意,通过更改"2" 可以获得更多或更少的小数位数.

  • 不幸的是,它似乎不适用于Firefox 50. (5认同)

use*_*048 16

内联解决方案结合了以下格式的Groot和Ivaylo建议:

onchange="(function(el){el.value=parseFloat(el.value).toFixed(2);})(this)"
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用,因为如果你有一个占位符,默认情况下它将采用该值,你不能在输入中更改它. (2认同)

小智 7

一个更简单的解决方案是(如果您以特定形式定位所有数字输入):

//limit number input decimal places to two
$(':input[type="number"]').change(function(){
     this.value = parseFloat(this.value).toFixed(2);
});
Run Code Online (Sandbox Code Playgroud)


小智 6

其他人在这里发布的内容主要起作用,但是onchange当我多次使用相同方向的箭头更改数字时,使用不起作用。做的是什么oninput。我的代码(主要是从MC9000借用的):

的HTML

<input class="form-control" oninput="setTwoNumberDecimal(this)" step="0.01" value="0.00" type="number" name="item[amount]" id="item_amount">
Run Code Online (Sandbox Code Playgroud)

JS

function setTwoNumberDecimal(el) {
        el.value = parseFloat(el.value).toFixed(2);
    };
Run Code Online (Sandbox Code Playgroud)