0

jquery Calculator プラグインを使用していますが、問題が発生しており、回避策があるかどうか疑問に思っていました。計算する反復が 8 回を超えるフォームがあります。#9に到達すると、エラーが表示されずに壊れます。

$(function() {
      $('input[name^=sum]').keyup(function() {
            var sum1 = parseFloat($('input[name=sum1]').val()); // Or parseInt if integers only
            var sum2 = parseFloat($('input[name=sum2]').val());
            var sum3 = parseFloat($('input[name=sum3]').val());
            var sum4 = parseFloat($('input[name=sum4]').val());
            var sum5 = parseFloat($('input[name=sum5]').val());
            var sum6 = parseFloat($('input[name=sum6]').val());
            var sum7 = parseFloat($('input[name=sum7]').val());
            var sum8 = parseFloat($('input[name=sum8]').val());
            var sum9 = parseFloat($('input[name=sum9]').val());
            var sum10 = parseFloat($('input[name=sum10]').val());
            $('#totalSum').val(sum1 + sum2 + sum3 + sum4 + sum5 + sum6 + sum7 + sum10);
      });
});
$(function() {
        $('input#totalSum').blur(function() {
            var amt = parseFloat(this.value);
            $(this).val('' + amt.toFixed(2));
        });
    });
4

1 に答える 1

0

バグではありません。入力を にデフォルト設定してください0。そうしないと、 (Not a Number)parseFloatを返す空の文字列を解析しようとします。NaNこれを行うには、入力の属性を設定するかvalue="0"、次の行に沿って何かを実行します。

var sum1 = parseFloat($('input[name=sum1]').val(), 10)  || 0;

概念を示すフィドルを次に示します: http://jsfiddle.net/fqfyL/

別の注意点として、入力ごとにコード行を記述する代わりに、入力を反復処理することでロジックを大幅に簡素化できます。その概念を示す別のフィドルを次に示します: http://jsfiddle.net/fqfyL/1/

最後に、どの「jQuery 電卓プラグイン」を使用しているかはわかりませんが (数十億個しかありません)、どちらのフィドルでも投稿したコードでプラグインを使用していません。それはすべて単純な jQuery/JavaScript です。「jQuery 電卓プラグイン」にまだ問題がある場合は、作成者のサイトへのリンクを投稿してください。

于 2012-10-24T00:10:58.927 に答える