0

最后我有多个下拉列表计算总价,除了一些问题外,它的效果很好。

首先,我想添加更多的价格,所以它应该是:

总计:20.97 英镑

增值税: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 英镑

我非常接近完成这个,但我无法克服最后一个障碍。

谢谢

4

2 回答 2

0

Javascript 是从数据库中提取 DDL 中的值还是硬编码到表单中?

% 的计算为 20.97 *0.10。由于 10% 是硬编码的,这应该适用于最终的下拉列表。

此外,除了向表单添加值和百分比计算之外,我不确定问题出在哪里,也许更多信息会有价值......

于 2012-05-16T18:31:34.080 回答
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);
于 2012-05-16T20:15:31.720 回答