HTML5数字输入 - 始终显示2位小数

Gui*_*ira 92 html html5

是否有任何方法可以格式化input[type='number']值以始终显示2位小数?

示例:我想看"0.00"而不是0.

谢谢

Ric*_*haw 57

你不能真的,但你可能是一个中途步骤:

<input type='number' step='0.01' value='0.00' placeholder='0.00' />
Run Code Online (Sandbox Code Playgroud)

  • 这在Chrome 55.0.2883.75中不起作用.如果我创建一个表单元素,将标记置于上方,在输入中键入"1200"并点击远离元素的选项卡,显示的文本仍然是"1200"而不是"1200.00". (15认同)
  • 所有这些似乎都是控制步骤箭头的作用.设置值为1/3不会将结果限制为2位小数 (6认同)

Gui*_*ira 52

解决了建议,并添加了一个jQuery来强制整数格式 parseFloat($(this).val()).toFixed(2)


Dis*_*age 15

使用该step属性将启用它.它不仅决定了它应该循环多少,而且确定允许的数量.使用step="0.01" 应该做的技巧,但这可能取决于浏览器如何遵守标准.

<input type='number' step='0.01' value='5.00'>
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用。如果我点击 5.01 然后点击它在 Chrome 72 中显示 5 而不是 5.00 (10认同)
  • 无关紧要。问题是希望始终显示小数点后两位,而这个答案并没有做到这一点。 (9认同)

lit*_*die 8

input="number" step="0.01"在Chrome中使用工作的解决方案非常适合我,但在某些浏览器中无法使用,特别是在我的情况下使用Frontmotion Firefox 35 ..我必须支持.

我的解决方案是使用Igor Escobar的jQuery Mask插件进行jQuery,如下所示:

<script src="/your/path/to/jquery-mask.js"></script>
<script>
    $(document).ready(function () {
        $('.usd_input').mask('00000.00', { reverse: true });
    });
</script>

<input type="text" autocomplete="off" class="usd_input" name="dollar_amt">
Run Code Online (Sandbox Code Playgroud)

这很好用,当然应该检查提交后的值:)注意,如果我不必为浏览器兼容性这样做,我会使用@Rich Bradshaw的上述答案.

  • 不知道为什么这个被投票了......让我大吃一惊.正如我在回答中所说,这是一个替代解决方案,仅适用于那些(像我一样)被支持浏览器的人,其他答案不起作用.我知道它有效,因为它目前正在生产和工作! (2认同)

mhe*_*ier 6

根据@Guilherme Ferreira 的这个答案,您可以在parseFloat每次字段更改时触发该方法。因此,该值始终显示两位小数,即使用户通过手动键入数字来更改该值。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $(".floatNumberField").change(function() {
            $(this).val(parseFloat($(this).val()).toFixed(2));
        });
    });
</script>

<input type="number" class="floatNumberField" value="0.00" placeholder="0.00" step="0.01" />
Run Code Online (Sandbox Code Playgroud)


Ste*_*aul 5

如果您来到这里只是想知道如何限制为 2 个小数位,我有一个本机 javascript 解决方案:

Javascript:

function limitDecimalPlaces(e, count) {
  if (e.target.value.indexOf('.') == -1) { return; }
  if ((e.target.value.length - e.target.value.indexOf('.')) > count) {
    e.target.value = parseFloat(e.target.value).toFixed(count);
  }
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<input type="number" oninput="limitDecimalPlaces(event, 2)" />
Run Code Online (Sandbox Code Playgroud)

请注意,这不能 AFAIK,请使用数字输入来防御chrome 错误。