jQuery计算来自其他两个字段的字段

时间:2016-12-15 08:57:16

标签: jquery

我不明白为什么这不能正常工作:

Fiddle

我只想显示税额但得到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);
});

4 个答案:

答案 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