如果选中第一个复选框,则根据条件禁用其他复选框

问题描述 投票:0回答:1

我有一个页面,其中包含带有值的复选框列表。每个复选框都有带有相应值的数据属性。如果选中了第一个复选框,则我只希望其数据属性等于当前复选框的数据属性的复选框保持可选择状态,而所有其他复选框均被禁用。

我已经在一定程度上做到了这一点,但是如果我取消选中任何有效的选定框,则会启用所有其他复选框。我只希望在未选择任何有效复选框的情况下启用所有其他复选框。

HTML

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="style.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
  <script src="script.js"></script>
</head>
<body>
  <label>Number:7967</label>
<input type="checkbox" class="my-check" data-number="7867" data-code="CB45" / >
 <label>Number:3307</label>
<input type="checkbox" class="my-check" data-number="3307" data-code="HUNT1" / >
 <label>Number:3307</label>
<input type="checkbox" class="my-check" data-number="3307" data-code="HUNT1" / >
 <label>Number:5645</label>
<input type="checkbox" class="my-check" data-number="5645" data-code="KLY" / >
</body>
</html>
$(function(){


    $(".my-check").each(function (e, elem) {
            $(elem).on("change", function () {
                var num = $(this).data("number");
                var co = $(this).data("code");
                if ($(this).eq(0).is(':checked')) {

                    $('.my-check:not([data-number=' + num + '])').attr('disabled', true);
                    $('.my-check:not([data-code=' + co + '])').attr('disabled', true);
                } else {
                    $(".my-check").not($(this)).attr('disabled', false);
                }

            });

        })

enter image description here

您可以从图像中看到3307号是可选的,因为它们满足条件,即数据属性相同。所有其他属性均被禁用。问题是,当我取消选中任何有效数字时,所有其他框都被启用。我希望所有其他框保持禁用状态,除非未检查有效数字。

Sample code here

jquery checkbox jquery-plugins
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.