价格更新有效,但没有多次选择和折扣最后的价格

时间:2012-05-16 18:16:17

标签: javascript mysql drop-down-menu

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

首先,我想进一步增加价格,所以它应该是:

总计: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

我已经接近完成了这个,但我无法克服最后的障碍。

由于

2 个答案:

答案 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);