如何创建一个 none 复选框,如果它被选中,则取消选中其他复选框

How to create a none checkbox that unchecked other checkboxes if it's selected

我如何创建一个 none 的复选框 所以当我选中该选项时,其余的复选框应该被取消选中,如果我尝试选中其他选项 none 复选框应自动取消选中。

还应该是,如果未选中 none 复选框,则应强制用户选中至少 1 个剩余的复选框。

<label for="box1">
<input id="box1" type="checkbox" name="nums" value="1" >
item 1</label>
<label for="box2">
<input id="box2" type="checkbox" name="nums" value="2" class="check">
item2</label>
<label for="box3">
<input id="box3" type="checkbox" name="nums" value="3" class="check">
item3</label>
<label for="box4">
<input id="box4" type="checkbox" name="nums" checked="checked" value="none">
none of the above</label>

它不像主复选框

你可以这样做:

$("[id^=box]").change(function() {
  if ($(this).is("#box4")){
      $("[id^=box]").not($("#box4")).first().prop("checked",!$(this).is(":checked"))
  } else {
      $("#box4").prop("checked", !$("[id^=box]").not($("#box4")).is(":checked"));
  }
});

如果第 3 个复选框中的 none 被选中,复选框 4 将被选中,如果前 3 个中的 1 个被选中,则取消选中。

演示

$("[id^=box]").change(function() {
  if ($(this).is("#box4")){
  $("[id^=box]").not($("#box4")).first().prop("checked",!$(this).is(":checked"))
  } else {
  $("#box4").prop("checked", !$("[id^=box]").not($("#box4")).is(":checked"));
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="box1">
<input id="box1" type="checkbox" name="nums" value="1" >
item 1</label>
<label for="box2">
<input id="box2" type="checkbox" name="nums" value="2" class="check">
item2</label>
<label for="box3">
<input id="box3" type="checkbox" name="nums" value="3" class="check">
item3</label>
<label for="box4">
<input id="box4" type="checkbox" name="nums" checked="checked" value="none">
none of the above</label>

$('#checkbox input').click(function() {
        if($(this).attr('id') == 'box4') {
            if ($('input#box4:checked').length) {
                $("input#box1").prop("checked", false);
                $("input#box2").prop("checked", false);
                $("input#box3").prop("checked", false);
            } else {
                $("input#box1").prop("checked", true);
            }
        } else {
            if ($('input#box1:checked').length || $('input#box2:checked').length || $('input#box3:checked').length) {
                $("input#box4").prop("checked", false);
            } else {
                $("input#box4").prop("checked", true);
            }
        }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="checkbox">

    <label for="box1">
        <input id="box1" type="checkbox" name="nums" value="1" >
        item 1</label>
        <label for="box2">
        <input id="box2" type="checkbox" name="nums" value="2" class="check">
        item2</label>
        <label for="box3">
        <input id="box3" type="checkbox" name="nums" value="3" class="check">
        item3</label>
        <label for="box4">
        <input id="box4" type="checkbox" name="nums" checked="" value="none">
        none of the above</label>
</div>

我将上面的 2 个答案组合在一起,效果很好。

$('#checkbox input').click(function() {
    if($(this).attr('id') == 'box4') {
        if ($('input#box4:checked').length) {
            $("input#box1").prop("checked", false);
            $("input#box2").prop("checked", false);
            $("input#box3").prop("checked", false);
        } else {
            $("input#box1").prop("checked", true);
        }
    } else if ($('input#box1:checked').length || $('input#box2:checked').length || $('input#box3:checked').length) {
            $("input#box4").prop("checked", false);
    }
});
$("[id^=box]").change(function() {
if ($(this).is("#box4")){
$("[id^=box]").not($("#box4")).first().prop("checked",!$(this).is(":checked"))
 } else {
 $("#box4").prop("checked", !$("[id^=box]").not($("#box4")).is(":checked"));
 }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="checkbox">

<label for="box1">
    <input id="box1" type="checkbox" name="nums" value="1" >
    item 1</label>
    <label for="box2">
    <input id="box2" type="checkbox" name="nums" value="2" class="check">
    item2</label>
    <label for="box3">
    <input id="box3" type="checkbox" name="nums" value="3" class="check">
    item3</label>
    <label for="box4">
    <input id="box4" type="checkbox" name="nums" checked="" value="none">
    none of the above</label>
</div>