使用javascript检查至少1个复选框和最多3个复选框的复选框验证

Ste*_*son 2 javascript checkbox

至少应选中一个复选框,最多可以选中 3 个复选框。

function checkout(){
    var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
    if (checkBoxes.length > 3){
        alert('You cannot select more than 3 books');
        return false;
    }
    if (checkBoxes.length == 0) {
        alert('Please select at least 1 book');
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

但是使用此代码,无论我选择多少本书,都会出现消息“您不能选择超过 3 本书”。

为了满足只需要选中一个复选框,我使用了以下代码,效果很好。

function checkout(){
    var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
    var isChecked = false;
    for (var i = 0; i < checkBoxes.length; i++) {
        if ( checkBoxes[i].checked ) {
            isChecked = true;
        };
    };
    if ( isChecked ) {
        alert( 'Your books have been sent to your mail !' );
    } else {
       alert( 'Please, check at least one checkbox!' );
       return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我如何获得最大约束?

任何帮助将不胜感激。

Era*_*hel 5

您可以使用获得所有选中的复选框 document.querySelectorAll('.myCheckBox:checked');

function checkout(){
  const checkBoxes = document.querySelectorAll('.myCheckBox:checked');

  if (checkBoxes.length > 3){
      alert('You cannot select more than 3 books');
      return false;
  } else if (!checkBoxes.length) {
    alert( 'Please, check at least one checkbox!' );
  }
}
Run Code Online (Sandbox Code Playgroud)
<input class="myCheckBox" type="checkbox">
<input class="myCheckBox" type="checkbox">
<input class="myCheckBox" type="checkbox">
<input class="myCheckBox" type="checkbox">

<button onClick="checkout()">Check</button>
Run Code Online (Sandbox Code Playgroud)