0

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

代码示例取自http://forum.jquery.com/topic/calculation-on-form-fields并且可以正常工作。然而,我的乘法/除法适用于增值税,但加法给出了一些非常奇怪的结果。

示例数据输入:
siteFee = 3000
数量 = 1
增值税 = 20

VAT 函数 (a * b * c) /100计算正常并给出 600,这将是正确的,但是 grandTotal 出现在 3000611.66599999999999 这没有多大意义。看起来它试图将这些值连接在一起而不是将它们加在一起,但话又说回来,这也没有真正发生!

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因此这并不重要,但我想我会提到它。

任何指针都会很棒。

干杯尼克

4

5 回答 5

2

在 javascript 中执行计算时尝试使用parseFloat()parseInt( ) 函数,因为 + 是 javascript 中连接的操作符

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

于 2013-08-28T09:55:52.243 回答
2

尝试这个 :

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

}

我还没有测试过。

于 2013-08-28T09:57:58.287 回答
1

字段ab是字符串类型,因此它会进行字符串连接。

尝试

var grandTotal = parseFloat(a) + parseFloat(d);
于 2013-08-28T09:54:44.460 回答
1

尝试更换

var grandTotal = a + d;

var grandTotal = Number(a) + Number(d);
于 2013-08-28T09:55:24.673 回答
0

您最初也可以将变量创建为数字,这对于您需要进行的任何更多计算可能更清晰。

 var num = new Number(value);
于 2013-08-28T10:02:13.687 回答