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

时间:2017-08-16 07:25:20

标签: 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;
    }

但是使用此代码,无论我选择的图书数量如何,都会显示“您无法选择超过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;
    }
}

但是如何获得最大约束?

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:4)

您可以使用document.querySelectorAll('.myCheckBox:checked');

获取所有选中的复选框

&#13;
&#13;
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!' );
  }
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

你走在正确的轨道上!诀窍是简单地计算已检查的书籍而不是仅使用布尔值:

function checkout(){
    var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
    var nbChecked = 0;
    for (var i = 0; i < checkBoxes.length; i++) {
        if ( checkBoxes[i].checked ) {
            nbChecked++;
        };
    };
    if ( nbChecked> 3 ) {
        alert( 'You cannot select more than 3 books' );
        return false;
    } else if(nbChecked == 0){
       alert( 'Please, check at least one checkbox!' );
       return false;
    }else{
       //Do what you need for form submission, if needed...
    }
}

答案 2 :(得分:1)

创建一个计数器来计算已检查的数量

function checkout(){
var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
var isChecked = false;
var numChecked=0;
for (var i = 0; i < checkBoxes.length; i++) {
    if ( checkBoxes[i].checked ) {
numChecked++;
        isChecked = true;
    };
    };
   if ( (isChecked) && numChecked<3 ) {
    alert( 'Your books have been sent to your mail !' );
   } else {
   alert( 'Please, check at least one checkbox! And not more than 3' );
    return false;
 }
}

答案 3 :(得分:1)

使用循环计数器或使用querySelectorAll如果是IE9 +,Chrome或Firefox:

function checkout(){
    //For all
    var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
    var length= 0;
    for (var i = 0; i < checkBoxes.length; i++) {
        if ( checkBoxes[i].checked ) {
            length++;
        };
    };

    //In IE9+, Chrome or Firefox you can do:
    //var length= document.querySelectorAll('.myCheckBox:checked');

    if ( length> 3 ) {
        alert("You cann't select more than 3");
        return false;
    } else if(length == 0){
       alert("Please, check at least one!");
       return false;
    }
    alert( 'Your books have been sent to your mail !' );
}

答案 4 :(得分:0)

您是否检查了复选框的指示是布尔标志

var isChecked = false;
...
if(isChecked) {
...

现在,这与询问isChecked是否等于1的逻辑相同。

您可以类似计算选中复选框的次数。然后,只需检查您是否对复选框的数量确定无效。

if ( checkBoxes[i].checked ) {
    //isChecked = true;
    isChecked++;
};

isChecked现在正在计算它们

if ( isChecked > 0 && isChecked <= 3  ) {

检查它们是否介于1和3之间(含)