javascript/jquery:如何将输入值限制为点后两位小数

javascript/jquery: how to limit input value to 2 decimals after the point

我正在努力处理一个输入,该输入应该给我输入 B 的减法 - 输入 A 在点后两位小数。它只是有时有效:

$('.b').on('keyup', function() {
  var substr = $('.b').val() - $('.a').val();
  $('.c').val(substr).toFixed(2);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
A <input type="text" class="form-control a" value="" /><br /><br /> B <input type="text" class="form-control b" value="" /><br /><br /> B-A <input type="text" class="form-control c" value="" />

例如:如果您在 A 中填写:0.58,在 B 中填写 0.82,则 C 中的值保留 2 位小数 但是,如果我将 B 中的值更改为 0.81,C 的值将不再是两位小数!

为什么会出现这种奇怪的行为?

您应该在 substr 上致电 toFixed():

$('.b').on('keyup', function() {
    var substr = $('.b').val() - $('.a').val();
    $('.c').val(substr.toFixed(2))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
A <input type="text" class="form-control a" value="" /><br /><br />


 B <input type="text" class="form-control b" value="" /><br /><br />


  B-A <input type="text" class="form-control c" value="" />

最好将变量转换为 Float。这将使您能够正确使用 .toFixed()

考虑以下因素。

$("input.b").on('keyup', function() {
  var a = parseFloat($("input.a").val());
  var b = parseFloat($("input.b").val());
  var c = (a - b).toFixed(2);
  $("input.c").val(c);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
A <input type="text" class="form-control a" value="19.9999" /><br /><br /> B <input type="text" class="form-control b" value="3.33333" /><br /><br /> B-A <input type="text" class="form-control c" value="" />

在你的剧本中,你也有一个小错别字:

$('.c').val(substr).toFixed(2);

这不会按预期工作,我相信你的意思是:

$('.c').val(substr.toFixed(2));

然而,由于这是字符串变量,它可能无法按预期工作。

var n =1.7373773;

n=n.toFixed(2);

document.write(n);

我想你指的是这个。

这将输出 n=1.73