jQuery从另外两个字段计算字段

jQuery从另外两个字段计算字段,jquery,Jquery,我不明白为什么这不能正常工作: 我只想显示税额,但它得到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

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

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

在执行操作之前,需要验证
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);
});
这也很有用,因为元素是只读的。

在执行操作之前,您需要验证
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);
});
这也很有用,因为元素是只读的。
将字符串解析为int,将事件更改为输入类型事件:

 $(document).on('input', '#netto', function () {

  var brutto = parseInt($("#brutto").val());
  var netto = parseInt($("#netto").val());

  $("#brutto").val(netto * 1.19);
  $("#tax").val((netto * 1.19) - netto );


});
最好使用输入类型编号,这样就不会出现无效值的问题

或:


如果要在NaN为空时去掉它,请将字符串解析为int,将事件更改为输入类型事件:

 $(document).on('input', '#netto', function () {

  var brutto = parseInt($("#brutto").val());
  var netto = parseInt($("#netto").val());

  $("#brutto").val(netto * 1.19);
  $("#tax").val((netto * 1.19) - netto );


});
最好使用输入类型编号,这样就不会出现无效值的问题

或:


如果要在NaN为空时清除它,请尝试以下代码:

// 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);
}))

在您的代码中,新值(natto*1.19)之后的变量中不会更新brutto的值,因此您会得到错误的结果


谢谢…

请尝试以下代码:

// 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);
}))

在您的代码中,新值(natto*1.19)之后的变量中不会更新brutto的值,因此您会得到错误的结果


感谢…

问题在于,在填充之前先获得brutto值,解决方案是在计算
$(“#brutto”).val(netto*1.19)后获得
var brutto

//计算残值税
$(document).on('keyup-paste','#netto',function(){
var netto=+$(“#netto”).val();
$(“布鲁托”).val(净额*1.19);
var brutto=+$(“#brutto”).val();
美元(“#税”).val(布鲁托-内托);
});

布鲁托
税款19%
内托

问题在于,在填充之前先获得brutto值,解决方案是在计算
$(“#brutto”).val(netto*1.19)后获得
var brutto

//计算残值税
$(document).on('keyup-paste','#netto',function(){
var netto=+$(“#netto”).val();
$(“布鲁托”).val(净额*1.19);
var brutto=+$(“#brutto”).val();
美元(“#税”).val(布鲁托-内托);
});

布鲁托
税款19%
内托


您能定义有效的吗?你是什么意思?为什么这不起作用?你能描述一下幕后发生了什么吗?@lewis4u,当你在执行数学运算时,你需要检查输入是数字还是NOTK…jQuery中是否有一些函数可以检查isset()是否与php@lewis4u,您可以通过js typeof方法进行检查,如果数字在字符串“8”中,您可以通过+8将其更改为数字类型@lewis4u,下一次请用英语术语,因为我完全不知道术语
brutto
你能定义有效吗?你是什么意思?为什么这不起作用?你能描述一下幕后发生了什么吗?@lewis4u,当你在执行数学运算时,你需要检查输入是数字还是NOTK…jQuery中是否有一些函数可以检查isset()是否与php@lewis4u,您可以通过js typeof方法进行检查,如果数字在字符串“8”中,您可以通过+8将其更改为数字类型@lewis4u,下一次请使用英语术语,因为我完全不知道术语
brutto
请不要忘记
radix
parseInt()
什么是基数???@lewis4u,数学数字的基数请看是的。但这并不是最优的。用户Francesco Roggia指出了我的代码不起作用的原因。关键的一点是,我在一开始就声明了brutto,而不是在计算了brutto之后…我只需要切换行,现在就可以了!不要忘记
radix
with
parseInt()
什么是基数???@lewis4u,数学数字的基数请看是的,它可以工作。但这并不是最优的。用户Francesco Roggia指出了我的代码不起作用的原因。关键的一点是,我在一开始就声明了brutto,而不是在计算了brutto之后…我只需要切换行,现在就可以了!