我有多个下拉列表计算最终的总价格,除了一些问题外,它的效果很好。
首先,我想进一步增加价格,所以它应该是:
总计:20.97英镑V.A.T:£4.19
总金额:25.16英镑
我确信这很简单,但我怎么想不到?
其次 - 它只适用于单个选择下拉列表,如果我想在一个列表中选择多个选项,它只会计算一个
这是我用来计算价格的代码:
$(function(){
$(".calculate").on("change", function(){
var total = 0;
$('.calculate').each(function() {
if($(this).val() != 0) {
total += parseFloat($(this).val());
}
});
$('#total').text('£' + total.toFixed(2));
});
});//]]>
第三,有大约8个下拉列表,但我希望最后一个折扣总价而不是添加到它,上面的代码从每个选择的选项值中获取价格,因此折扣金额(在折扣中)数据库中的列,写为10%。
所以基本上,在7个列表之后,我应该总共为20.97英镑,然后一旦选择了最后一个列表,它应该用折扣金额替换价格,即(-10%)£18.87
我已经接近完成了这个,但我无法克服最后的障碍。
由于
答案 0 :(得分:0)
Javascript是从数据库中提取DDL中的值还是硬编码到表单中?
%的计算是20.97 * 0.10。由于10%是硬编码的,因此应该适用于最终下拉列表。
另外,除了在表单中添加值以及计算百分比之外,我不确定问题出在哪里,也许更多的信息会有价值......
答案 1 :(得分:0)
当SELECT允许多个选择时,jQuery val()函数返回一个值数组。因此,您的代码需要检测val()是否返回和数组,如果是,则循环数组并添加所有这些项。这是一种方式:
$('.calculate').each(function() {
var currentValue = $(this).val();
if (currentValue.length != undefined) {
for (var i = 0; i < currentValue.length; i++) {
if (currentValue[i] != 0) {
total += parseFloat(currentValue[i]);
}
}
}
else if(currentValue != 0) {
total += parseFloat(currentValue);
}
});
这应该照顾多个选择选项。对于折扣,只需获取最终SELECT的值并应用折扣:
var discount = parseFloat($('.discount').val()) / 100;
total = total - (total * discount);