如果没有选择选项,jQuery select onchange

时间:2013-07-03 14:23:40

标签: jquery forms

我有一个选择字段供用户在他们的订单中添加T恤。选项如下:

  • 没有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美元,而不是在衬衫尺寸之间。

思想?

5 个答案:

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

});