复选框因jquery无法正常工作而被禁用

时间:2014-12-17 11:07:02

标签: javascript jquery ajax html5

我有一些复选框,通过在数据库中执行表示餐馆表格的选择来显示。那些已经保留的表我添加了一个禁用的属性。我的脚本的问题是我只想选择最多三个表,这意味着我需要将禁用的属性添加到另一个以阻止它们。当我想取消选择那些已经选择的3时我需要删除已禁用的属性。问题是它从所有表中删除了属性,即使是那些从数据库中保留和​​选择的属性。

这是我的剧本:
JSFIDDLE HERE     

    <script type="text/javascript">
      var $checks = $(".table").change(function () {
      if ($checks.filter(":checked").length<3)
      {
        $(".formular").toggle($checks.filter(":checked").length>0);
        $checks.not(":checked").removeAttr("disabled");
        }
        else
        {
        $checks.not(":checked").attr("disabled", "disabled");
        }

    });

    </script>

1 个答案:

答案 0 :(得分:0)

在开始时和js绑定更改事件中禁用的输入中添加了一个类.ignore仅限于没有@lolka_bolka提到的ignore类的复选框

<强> HTML

<input type="checkbox" class="bowling ignore" disabled/>
<input type="checkbox" class="bowling ignore" disabled/>
<input type="checkbox" class="bowling"/>
<input type="checkbox" class="bowling"/>

<强> JS

var $checks = $(".bowling:not(.ignore)").change(function () {
    if ($checks.filter(":checked").length < 3) {
        $(".formular").toggle($checks.filter(":checked").length > 0);
        $checks.not(":checked").removeAttr("disabled");
    } else {
        $checks.not(":checked").attr("disabled", "disabled");
    }

});
  

:not(foo){}将匹配任何不是foo的东西,包括html和   身体。 Source

Demo