我不明白为什么这不能正常工作:
我只想显示税额但得到false
结果。
// calculate brutto and tax
$(document).on('keyup paste', '#netto', function() {
var brutto = $("#brutto").val();
var netto = $("#netto").val();
$("#brutto").val(netto * 1.19);
$("#tax").val(brutto - netto);
});
答案 0 :(得分:2)
请尝试以下代码:
// calculate brutto and tax
$(document).on('keyup paste', '#netto', function () {
var brutto = $("#brutto").val();
var netto = $("#netto").val();
$("#brutto").val(netto * 1.19);
var brutto1 = $("#brutto").val();
$("#tax").val(brutto1 - netto);
});
在你的代码中,brutto的值在新值(natto * 1.19)之后不会在变量中更新,因此你会得到错误的结果。
...谢谢
答案 1 :(得分:2)
问题是你在填写之前得到了brutto值,解决方法是在计算str_ireplace
之后获得var brutto
:
$("#brutto").val(netto * 1.19)
// calculate brutto and tax
$(document).on('keyup paste', '#netto', function() {
var netto = +$("#netto").val();
$("#brutto").val(netto * 1.19);
var brutto = +$("#brutto").val();
$("#tax").val(brutto - netto);
});
答案 2 :(得分:1)
在执行操作之前,您需要验证brutto
元素的值是否为数字。 +
运算符用于将输入转换为数字。
$(document).on('keyup paste', '#netto', function() {
var brutto = +$("#brutto").val() || 1;
var netto = +$("#netto").val() || 1;
brutto = netto * 1.19;
$("#brutto").val(brutto);
$("#tax").val(brutto - netto);
});
这也是有用的,因为元素是只读的。 Updated Fiddle
答案 3 :(得分:1)
将字符串解析为int,将事件更改为输入类型事件:
alert
如果你使用输入类型编号更好,那么你就没有无效值的问题
https://jsfiddle.net/ze5tsgy9/6/ 或者:
https://jsfiddle.net/ze5tsgy9/7/如果你想在空的时候摆脱NaN