【问题标题】:Checbox Limiter disabled problems复选框限制器禁用问题
【发布时间】:2016-01-16 17:49:48
【问题描述】:
<input type="checkbox" value="1" name="malzeme1[]" checked="" disabled="" id="checkboxExample1" onclick="checkNumChecked(this, 2)">
<label for="checkboxExample1">Soğan<b class="product-subtitlex"> | + 1 ₺</b>
</label>
<input type="checkbox" value="3" name="malzeme1[]" id="checkboxExample3" onclick="checkNumChecked(this, 2)">
<label for="checkboxExample3">Soğanx<b class="product-subtitlex"> | + 1 ₺</b>
</label>

<input type="checkbox" value="4" name="malzeme1[]" id="checkboxExample4" onclick="checkNumChecked(this, 2)">
<label for="checkboxExample4">Soğanc<b class="product-subtitlex"> | + 1 ₺</b>
</label>

<input type="checkbox" value="5" name="malzeme1[]" id="checkboxExample5" onclick="checkNumChecked(this, 2)">
<label for="checkboxExample5">Soğanxc<b class="product-subtitlex"> | + 1 ₺</b>
</label>

<script>
  function checkNumChecked(ele, limit) {
    var ct = 0,
      siblings = document.getElementsByName(ele.name),
      checked = 0;
    for (ct = 0; ct <= siblings.length - 1; ct++) {
      checked += (siblings[ct].checked) ? 1 : 0
    }
    for (ct = 0; ct <= siblings.length - 1; ct++) {
      siblings[ct].disabled = siblings[ct].checked ? false : (checked == limit) ? true : false
    }
  }
</script>

这是我的复选框限制器。例如,当我选择 2 个复选框时,其他复选框将被禁用。但是,例如,当我取消选中 1 复选框后,这里就会出现问题。它也会删除原来的 disabled="" 复选框。它不必删除原始 disabled="" 代码

【问题讨论】:

    标签: javascript jquery checkbox


    【解决方案1】:

    为了永久禁用您希望代码单独保留的复选框,我在这里所做的是使用自定义数据属性“data-permdisable”。这告诉代码跳过对元素进行任何更改。

    另外,我应该指出,作为形式问题,您应该检查过="checked" 和 disabled="disabled"。

    <input type="checkbox" value="1" name="malzeme1[]" checked="checked" disabled="disabled" id="checkboxExample1"
        onclick="checkNumChecked(this, 2)" data-permdisable="true">
    <label for="checkboxExample1">
        Soğan<b class="product-subtitlex"> | + 1 ₺</b>
    </label>
    <input type="checkbox" value="3" name="malzeme1[]" id="checkboxExample3" onclick="checkNumChecked(this, 2)">
    <label for="checkboxExample3">
        Soğanx<b class="product-subtitlex"> | + 1 ₺</b>
    </label>
    <input type="checkbox" value="4" name="malzeme1[]" id="checkboxExample4" onclick="checkNumChecked(this, 2)">
    <label for="checkboxExample4">
        Soğanc<b class="product-subtitlex"> | + 1 ₺</b>
    </label>
    <input type="checkbox" value="5" name="malzeme1[]" id="checkboxExample5" onclick="checkNumChecked(this, 2)">
    <label for="checkboxExample5">
        Soğanxc<b class="product-subtitlex"> | + 1 ₺</b>
    </label>
    <script>
        function checkNumChecked(ele, limit) {
          var ct = 0,
          siblings = document.getElementsByName(ele.name),
          checked = 0;
            for (ct = 0; ct <= siblings.length - 1; ct++) {
                checked += ((siblings[ct].getAttribute("data-permdisable") == "true") ? 0 : ((siblings[ct].checked) ? 1 : 0))
            }
            for (ct = 0; ct <= siblings.length - 1; ct++) {
                siblings[ct].disabled = (siblings[ct].getAttribute("data-permdisable") == "true") ? 
                    siblings[ct].disabled : siblings[ct].checked ? false : (checked == limit) ? true : false
            }
        }
    </script> 
    

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多