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
我正在努力处理一个输入,该输入应该给我输入 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