我有一个选择字段供用户在他们的订单中添加T恤。选项如下:
value="no"
)value="S"
)value="M"
)
...等我目前将我的JS设置为:
$("select[name='tshirtsize']").change(function(){
if($(this).val() == "no"){
// subtract $15 from subtotal
} else {
// add $15 to subtotal
}
});
然而,如果用户选择一件衬衫尺码然后换成不同的衬衫尺码,则似乎在他们的购物车中添加另一件衬衫而不是替换第一件衬衫。这是有道理的,因为应以这种方式运作;但是,我不希望它。
我想要做的是,只有在他们从value="no"
更改为value="shirt-size-here"
时才向用户小计添加15美元,而不是在衬衫尺寸之间。
思想?
答案 0 :(得分:2)
只需要一个变量来定义你是否已经没有
var none_selected = true; //change this based on whatever the default is
$("select[name='tshirtsize']").change(function(){
if($(this).val() == "no"){
// subtract $15 from subtotal
none_selected = true;
} else if (none_selected) {
// add $15 to subtotal
none_selected = false;
}
});
答案 1 :(得分:0)
您可以添加变量来存储所选的选项,如下所示:
tmpSelection = "no";
$("select[name='tshirtsize']").change(function(){
if($(this).val() == "no"){
// subtract $15 from subtotal
}
else if(tmpSelection != "no" && $(this).val() != "no") {
// add $15 to subtotal
}
tmpSelection = $(this).val();
});
答案 2 :(得分:0)
var base_price = X;
$("select[name='tshirtsize']").change(function(){
if($(this).val() != "no"){
var new_price = base_price + Y;
// update price to show user.
}
});
答案 3 :(得分:0)
对我来说最简单的解决方案似乎是在click事件之外存储一个hasTShirt布尔值。另一种选择是在selector.select()事件中寻找选择器的先前值,但它只涉及存储相同数量的数据......
示例:
var hasTshirt = 0; //0 = false, 1 = true
$("select[name='tshirtsize']").change(function(){
if($(this).val() == "no" && hasTshirt == 1){
hasTshirt = 0;
// subtract $15 from subtotal
} else if (hasTshirt == 0){
hasTshirt = 1;
// add $15 to subtotal
}
});
答案 4 :(得分:0)
无论变化(尺寸/颜色/等)如何,您都希望创建一个特定于此产品价格的变量。
不是直接操纵总数,而是操纵产品特定的价格,然后将其添加到总数中。
$("select[name='tshirtsize']").change(function(){
var price;
if($(this).val() == "no"){
shirtPrice = 0;
} else {
shirtPrice = 15;
}
var total = getTotal(); // Define these yourself
setTotal(shirtPrice); // Define these yourself
});