0

ID などを使用して入力が正しくレイアウトされたフォームがあります。フォーム変数を計算するために小さな jQuery 関数をデプロイしました。本質的には、合計 VAT を計算してから、総計を計算したいと考えています。

コード例はhttp://forum.jquery.com/topic/calculation-on-form-fieldsから取得したもので、問題なく動作します。ただし、VAT の乗算/除算は機能しますが、加算によって非常に奇妙な結果が得られます。

データ入力例:
siteFee = 3000 qty
= 1
vat = 20

VAT 関数 (a * b * c) /100は OK を計算し、正しい 600 を返しますが、grandTotal は 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ください。

どんな指針も素晴らしいでしょう。

乾杯ニック

4

5 に答える 5

2

+ は javascript での連結の演算子であるため、javascript で計算を実行しながらparseFloat()またはparseInt( ) 関数を使用してみてください。

そう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

交換してみる

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 に答える