jQuery表单计算-工作,但奇怪的结果



我有一个使用ID等正确布局输入的表单。我部署了一个小jQuery函数来计算表单变量。本质上,我想先计算增值税总额,然后再计算总金额。

代码示例取自http://forum.jquery.com/topic/calculation-on-form-fields这还可以。然而,乘法/除法对增值税有效,但加法会产生一些非常奇怪的结果。

示例数据输入:
siteFee=3000
数量=1
vat=20

增值税函数(a * b * c) /100计算OK并给出600,这是正确的,但总金额为3000611.6659999999999,这没有多大意义。看起来它试图将值连接在一起,而不是将它们添加在一起,但话说回来,这也没有真正发生!。

jQuery代码:

<script>
         $(document).ready(function() {
           function compute() {
                  var a = $('#siteFee').val();
                  var b = $('#qty').val();
                  var c = $('#vat').val();
                  var d = $('#incVAT').val();
                  var totalVAT = (a * b * c) / 100;
                  var grandTotal = a + d;
                    $('#incVAT').val(totalVAT);
                    $('#total').val(grandTotal);
                }
                $('#siteFee, #qty, #siteFeeID, #vat').change(compute);
         });
    </script>

注意,#siteFeeID只是另一个表单变量,我在其中进行Ajax拉取以获得#siteFee的正确值,所以这并不重要,但我想我会提到它

任何指针都会很棒。

为Nick 干杯

尝试使用parseFloat()或parseInt()函数,因为它在javascript中执行计算,because+是javascript 中连接的属性

因此var grandTotal = parseFloat(a) + parseFloat(d);

试试这个:

function compute() {
      var a = parseFloat($('#siteFee').val());
      var b = parseFloat($('#qty').val());
      var c = parseFloat($('#vat').val());
      var d = parseFloat($('#incVAT').val());
      var totalVAT = (a * b * c) / 100;
      var grandTotal = a + d;
      $('#incVAT').val(totalVAT);
      $('#total').val(grandTotal);
}

我还没有测试。

字段ab属于字符串类型,因此它进行字符串串联。

尝试

var grandTotal = parseFloat(a) + parseFloat(d);

尝试更换

var grandTotal = a + d;

带有

var grandTotal = Number(a) + Number(d);

您最初也可以将变量创建为数字,这对于您需要进行的任何其他计算来说都可能更干净。

 var num = new Number(value);

最新更新