【问题标题】:Add discount to shopping-cart using checkboxes使用复选框将折扣添加到购物车
【发布时间】:2016-03-18 11:36:51
【问题描述】:

我真的需要一个可以帮助我的人:-)

我想通过点击商店中的各种复选框为客户提供折扣。

访问者最多可以选择 4 个复选框。不是 5、6 等。可以这样做吗?

我现在的问题是客户实际上可以免费获得该商品 - 或者更糟糕的是 - 我必须付费才能向他们出售商品!

这是测试代码:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox1" id="checkbox1" class="css-checkbox" value="20" />
<label for="checkbox1" class="css-label">banana</label><br>

<input type="checkbox" name="checkbox2" id="checkbox2" class="css-checkbox" value="20" />
<label for="checkbox2" class="css-label">apple</label><br>

<input type="checkbox" name="checkbox3" id="checkbox3" class="css-checkbox" value="20" />
<label for="checkbox3" class="css-label">biscuit</label><br>

<input type="checkbox" name="checkbox4" id="checkbox4" class="css-checkbox" value="20" />
<label for="checkbox4" class="css-label">jam </label><br>

<input type="checkbox" name="checkbox5" id="checkbox5" class="css-checkbox" value="20" />
<label for="checkbox5" class="css-label">orange </label><br>

<input type="checkbox" name="checkbox6" id="checkbox6" class="css-checkbox" value="20" />
<label for="checkbox6" class="css-label">pinepple </label><br>

<br /><br />

<span id="total"><b>Normal price: </b> 100</span></p>

<script>
var $total = 100;
var $total2 = 100;

$('input:checkbox').on('change', function() {
    if (this.checked)
        $total += -this.value;
    else
        $total -= -this.value;

        if ($total2 > $total)
            $('#total').html('<b>Discount  price: </b>'+$total);
        else
            $('#total').html('<b>Normal price: </b>'+$total);
});
</script>

【问题讨论】:

  • 一次只能选择一个单选按钮,不能选择多个。
  • 好的,抱歉。含义复选框:-)
  • if($('input:checked').length &gt; 4) alert('stop clicking my checkboxes');
  • 有效!但我不想要“警报”。也许以某种方式禁用剩余的复选框?
  • 检查我的答案,伙计!

标签: javascript forms checkbox shopping-cart ajaxform


【解决方案1】:

所以逻辑是——

如果点击了 4 个复选框,则禁用休息

var $total = 100;
var $total2 = 100;

$('input:checkbox').on('change', function() {
if($('input:checked').length == 4) { 
	$('input:checkbox:not(:checked)').attr("disabled", true);
  }
  else {
   $('input:checkbox:not(:checked)').attr("disabled", false);
  }
    if (this.checked)
        $total += -this.value;
    else
        $total -= -this.value;

        if ($total2 > $total)
            $('#total').html('<b>Discount  price: </b>'+$total);
        else
            $('#total').html('<b>Normal price: </b>'+$total);
            
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox1" id="checkbox1" class="css-checkbox" value="20" />
<label for="checkbox1" class="css-label">banana</label><br>

<input type="checkbox" name="checkbox2" id="checkbox2" class="css-checkbox" value="20" />
<label for="checkbox2" class="css-label">apple</label><br>

<input type="checkbox" name="checkbox3" id="checkbox3" class="css-checkbox" value="20" />
<label for="checkbox3" class="css-label">biscuit</label><br>

<input type="checkbox" name="checkbox4" id="checkbox4" class="css-checkbox" value="20" />
<label for="checkbox4" class="css-label">jam </label><br>

<input type="checkbox" name="checkbox5" id="checkbox5" class="css-checkbox" value="20" />
<label for="checkbox5" class="css-label">orange </label><br>

<input type="checkbox" name="checkbox6" id="checkbox6" class="css-checkbox" value="20" />
<label for="checkbox6" class="css-label">pinepple </label><br>

<span id="total"><b>Normal price: </b> 100</span>

【讨论】:

  • 哇,Kalpesh!你救了我的一天!我衷心感谢你:-)祝你有美好的一天!
  • 酷!这是你的第一个问题,你很快就得到了答案:D 享受你剩下的时间:D
  • 谢谢哥们!在这上面花了将近10个小时。有点尴尬 - 你在 5 分钟内修好了 :-)
  • 编程就是逻辑。我通过以下方式解决了您的问题 - 1. 最多可以点击 4 个复选框(找到如何在 StackOverflow 本身上获取点击复选框的数量) 2. 禁用休息(找到如何识别未选中的框,从 StackOverflow 再次得到答案)合并这两个瞧,它的工作! :)
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 2017-06-03
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2021-10-30
  • 1970-01-01
相关资源
最近更新 更多