我正在尝试使用其他2个输入更新输入。例如
金额:(用户输入值)
费用:(已设定值 - 禁用值:0.0002)
总计:(金额 - 费用)通过以下javascript计算出来
$('#amount').keypress(function() {
var total = $('#amount').val() - $('#fee').val();
if(typeof total != 'undefined'){ $('#total').val(total) }});
当我按下'在我输入一个数字时,它比使用total更新输入后面一步。
比如说如果我在输入金额中输入1,那么当我再次按1时,总数将是-0.0002(费用),它将是0.9998(即使输入的数量现在是11,依此类推。 )
答案 0 :(得分:4)
您使用keypress
的原因包括2个事件keydown
和keyup
,因此您的功能会在第一个事件上启动 - {{1所以你得到你的价值,如你所说"落后"后面的一步,导致keydown事件被触发时你的输入字段还没有收到按下的键值。使用keydown
,您将获得结果:
keyup
答案 1 :(得分:0)
是的,因为当调用函数时,字段不会使用值
更新在此步骤中调用该事件
因此,如果您可以将此事件更改为 keyup ,那么您将获得最新值。
答案 2 :(得分:0)
发布的答案是很好的答案,但此处使用的最佳事件是oninput
事件,因为它更快。
$('#amount').on('input', function() {
var total = $('#amount').val() - $('#fee').val();
if(typeof total != 'undefined'){
$('#total').val(total);
}
});
所有浏览器支持: browser support。实际上,它比onchange
和onkeyup
之类的其他事件得到更好的支持。您可以在https://caniuse.com/上进行比较。
您甚至可以将此事件用于其他输入元素。像复选框,单选按钮和选择元素一样。
很快。因此,您可以将其与搜索查询结合使用,以使搜索结果返回更快。
请注意:由于这不是键盘事件,因此该事件中将没有keyCode
或任何其他与键盘相关的值。