【问题标题】:Jquery Checkbox limit with a value that equals to the sum of 5Jquery Checkbox 限制,其值等于 5 的总和
【发布时间】:2016-10-24 21:17:54
【问题描述】:

好的,我有一个 jQuery,它限制了一次可以选择的复选框的数量。我的问题是:我有 10 个值为 1 的复选框。我还有 5 个值为 2 的复选框。在 Opecart 中,产品有一个特定的值,所以我不能在不破坏系统的情况下覆盖这个值。

这两组复选框有各自的限制:值 1 框的限制为 5。值 2 框的限制为 2。

它们的总和是 5。有没有办法将这些限制配对?

我所追求的一个例子: 用户勾选了 3 个 Value 1 Checkboxes,当前值为 3。他们现在可以再选择 2 个 value 1 checkboxes 或 1 value 2 checkboxes 来满足 5 的总和。

逻辑:

  • 5 值 1 = 5
  • 3 值 1 + 1 值 2 = 5
  • 1 值 1 + 2 值 2 = 5

这是用于限制复选框的 Jquery

var limit = 5;
$('input.single-checkbox').on('change', function(evt) {
   if($(this).siblings(':checked').length >= limit) {
       this.checked = false;
   }
});

这是产品页面的摘录,其中 Opencart 在复选框中定义了自己的默认值。

input class="limit" type="checkbox" name="option[547][]" value="1218" id="option-value-1218">

您可以看到,我不能只替换此值,因为它的目的在于将产品从页面拉到购物车。我需要找到一种在不损害系统的情况下应用我所说的逻辑的方法。

【问题讨论】:

    标签: javascript jquery html checkbox opencart


    【解决方案1】:

    每次用户更改复选框时,您需要使用each()检查checkedsummation

    var limit = 5;
    $('.limit').on('change', function(evt) {
      var sum = 0;
      $('.limit:checked').each(function(){
         sum += parseInt($(this).val());
      });
      if(sum >= limit) {
           this.checked = false;
      }
    });
    

    仅供参考,如果您无法更改复选框的值,您可以使用.data()data-value 一样获得其他属性。

    var limit = 5;
    $('.limit').on('change', function(evt) {
      var sum = 0;
      $('.limit:checked').each(function(){
         sum += parseInt($(this).val());
      });
      if(sum > limit) {
         this.checked = false;
      }
    });
    
    FYI, if you can't change the value of check-boxes you can use **[.data()]**[1] like `data-value` for additional attributes.
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input class="limit" type="checkbox" value="5"/>5
    <input class="limit" type="checkbox" value="4"/>4
    <input class="limit" type="checkbox" value="3"/>3
    <input class="limit" type="checkbox" value="2"/>2
    <input class="limit" type="checkbox" value="1"/>1

    【讨论】:

    • 我已经尝试过了,但正如我在问题中所说:Opencart 具有复选框上列出的产品的默认值。我无法删除这些值,因为它们将信息从该特定产品拉到购物车页面:显示价格、标题、描述等。如果我不使用 Opencart,这将起作用。
    • 正如你的问题所说,你想限制复选框的总和应该是 5。它不应该允许其他人检查..所以这样你就可以达到同样的效果。只是改变你的价值观。
    • 因此,如果您无法用自定义数据替换复选框的值,请尝试为复选框设置属性,例如 input class="limit" type="checkbox" name="option[547] []" value="1218" id="option-value-1218" data-value="4">
    • 那么我将如何应用它呢?我试过你的方法,加载..但是我的复选框现在无法选中。我已经为我的第一组复选框分配了一个数据值 1,并且
    • 使用了 Loading.. 的 Jquery 集,但我的复选框不会检查何时
    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    相关资源
    最近更新 更多