有很多方法可以解决这个问题。作为提醒之前,我绝对不要在客户端执行诸如“计算价格”之类的操作。也就是说,您可以计算价格以便向用户显示,但任何实际计算都应在服务器端完成(因为客户端可以调整和操作表单提交)。
我创建了一个简单的例子,它将对选中的复选框的结果进行比较(并简单地显示结果)。有很多方法可以操纵这些代码以适应您的目的。我已经使用了jQuery,但是还有其他一些有趣的选项可用于解决这个问题(例如,查看KnockoutJS)。
<input type="checkbox" class="adjust one" data-value="1.00" id="so1" /> <label for="so1">$1.00</label> <br/>
<input type="checkbox" class="adjust two" data-value="2.00" id="so2" /> <label for="so2">$2.00</label><br/>
<input type="checkbox" class="adjust one" data-value="3.00" id="so3" /> <label for="so3">$3.00</label>
<p>
Total: <span class="total"></span>
</p>
然后,你想包括下面的JavaScript(以及jQuery库)。
var total;
var calculateTotal = function() {
total = 0.0;
$('input[type="checkbox"]:checked').each(function() {
total += parseFloat($(this).data('value'));
});
$('.total').text(total);
};
$(document).ready(function() {
$('input[type="checkbox"]').live('change', function() {
calculateTotal();
});
calculateTotal(); //do it for initial price
});
calculateTotal()将计算基于选择匹配其对应的复选框(类型复选框的输入)总“选中”。然后这将从每个复选框中提取数据属性“值”,并根据该数字计算总数。你的问题的逻辑可能会有所不同,但只需调整calculateTotal应该处理这个问题。最后,只要复选框“更改”(最初一次),就会调用calculateTotal函数。
希望这应该是一个很大的帮助,让你启动和运行。这是一个JSFiddle现场演示。
'
\t \t \t \t '所以如果您选择邮件收集和呼叫应答, d的折扣为229美元,而不是248美元,但呼叫转移总是15美元。 – pikelet