-2

私のサンプルFiddleを見てください

転送用に選択されたクレジットの現在の合計があります。クレジット数を選択すると、現在の合計が加算されます。セクションごとに 6 クレジットで停止するように設計されています。この部分は正常に動作します。

私がやろうとしているのは、2 つの異なる結果セットを一緒に追加することです...

コミュニケーション+人文科学=総クレジット

... Total Credits:フィールドに表示します。これは私が迷子になっているところです。

私が理解できないのは、2つの異なるフィールドを一緒に追加する方法です...

これは私がその最終結果を得るために使用しているものです...(72は、カウントが最大72転送クレジットで停止するようにするためです

JavaScript...

$(function($) {
    $('#total_Credits select').change(function() {
        var sum = 0;
        $('#total_Credits select').each(function(idx, elm) {
            sum += parseFloat(elm.value, 10);
        });

     $('#total_Credits').html(Math.min(sum,72).toFixed(2))
    });
});

HTML...

Total Credits: &nbsp;&nbsp;<span id="total_Credits" style="color: red; font-weight:bold; font-size: 2em;"></span>  
4

2 に答える 2

2

複数の問題が発生しています。

1 つ目は、ID が一意でなければならないということです。同じ ID を持つ複数のリストを持つことはできません。「Credits」を ID ではなくクラスに変更します。

次に、#total_credits の選択がありません。そのため、その変更イベントは決して発生しません。選択したクレジットのいずれかが変更されるたびに、総計を計算して設定する必要があります。既存の変更機能でそれを行うことができます。これを行うには、各選択の値を取得して合計します。

フィドルを追加しました: http://jsfiddle.net/Tnk9m/1/

calcTotals = function() {
    var grandTotal = 0;
    $('.total').each(function() {
        if ($(this).text()) grandTotal += parseFloat($(this).text(), 10);
    });
    $('#total_Credits').text(Math.min(grandTotal,72).toFixed(2));

};
$('#communication select').change(function () {
    var sum = 0;
    $('#communication select').each(function (idx, elm) {
        sum += parseFloat($(elm).val(), 10);
    });

    $('#total_communication').html(Math.min(sum, 6).toFixed(2));
    calcTotals();
});

等...

于 2013-11-07T21:27:36.033 に答える
2

選択のグループごとに異なる関数は必要ありません。代わりに、単に使用できます

$(function($) {
    var sum = function($els, prop) {
        var s = 0;
        $els.each(function(idx, elm) {
            s += parseFloat(elm[prop], 10) || 0;
        });
        return s;
    };
    $('.select-wrapper select').change(function() {
        var $wrap = $(this).closest('.select-wrapper');
        $wrap.find('.sum').html(Math.min(sum($wrap.find('select'), 'value'),6).toFixed(2));
        $('.total-sum').html(Math.min(sum($('.sum'), 'innerHTML'),72).toFixed(2));
    });
});

デモ

id動作させるために html を少し変更し、重複したs やナンセンスなどの問題を修正したことに注意してください<br>

于 2013-11-07T22:08:00.260 に答える