请查看我的示例 Fiddle
我为“转会”选择的学分有一个总计。当您选择积分数时,运行总计会增加。它旨在停止每节6个学分。这部分工作正常。
我要做的是将两个不同的结果集一起添加......
沟通 + 人文 = 总积分
...并将其显示在总积分:字段中。这是我迷路的地方。
我无法弄清楚如何将两个不同的字段组合在一起......
这就是我用来获得最终结果的方法......( 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: <span id="total_Credits" style="color: red; font-weight:bold; font-size: 2em;"></span>
答案 0 :(得分:2)
你有很多问题在继续。
首先,id必须是唯一的。您不能拥有具有相同ID的多个列表。将“Credits”更改为不是id的类。
其次,没有#total_credits选择。所以改变事件永远不会发生。只要任何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();
});
等...
答案 1 :(得分: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));
});
});
注意我已经对html进行了一些修改以使其正常工作,并且修复了重复id
和无意义<br>
等问题。