强制数输入有两位小数,只有两位

时间:2017-04-21 13:18:58

标签: javascript jquery html

如何格式化以下输入以使价格被强制为两位小数并确保它只允许两个位置?

因此,例如,如果值为“1”,它将自动更改为“1.00”,“1.111”将更改为“1.11”。

我已经尝试过step =“0.01”,但这不起作用。

JSFiddle:https://jsfiddle.net/eub68raq/

HTML:

<input data-number="Quantity must be a number" data-required="Unit price required" min="0" step="0.01" id="unitPrice" value="" type="number" name="unitPrice" placeholder="Unit Price"/>

JS我试过: -

var number = $('input#unitPrice').val();
$('input#unitPrice').innerHTML = parseFloat(Math.round(number * 100) / 100).toFixed(2);

3 个答案:

答案 0 :(得分:4)

你可以这样做: -

$(document).ready(function(){
  $('input#unitPrice').blur(function(){
    var num = parseFloat($(this).val());
    var cleanNum = num.toFixed(2);
    $(this).val(cleanNum);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input data-number="Quantity must be a number" data-required="Unit price required" min="0" step="0.01" id="unitPrice" value="" type="number" name="unitPrice" placeholder="Unit Price"/>

答案 1 :(得分:3)

试试这个:

parseFloat(number.toFixed(2));

答案 2 :(得分:1)

使用您的代码进行舍入,您想要的东西可能如下所示:

$(document).ready(function(){
    $('input#unitPrice').change(function(){
        $(this).val(parseFloat(Math.round($(this).val() * 100) / 100).toFixed(2));
    });
});

使用keyup这不是一个非常幸运的选择,因为用户将无法更改输入值。一旦他写了一些东西,它将被改为2位小数。如果他试图删除一个数字,它将被放回。

如果你想要一个键盘行为,那么纠正这个值就必须延迟(例如使用setInterval)。