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

使用javascript检查至少1个复选框和最多3个复选框的复选框验证,javascript,checkbox,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.l

至少应选中一个复选框,最多可选中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;
    }
}
函数签出(){
var checkbox=document.getElementsByClassName('myCheckBox');
var isChecked=false;
对于(变量i=0;i
但是,如何在中获得最大约束


任何帮助都将不胜感激

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

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...
    }
}
函数签出(){
var checkbox=document.getElementsByClassName('myCheckBox');
var nbChecked=0;
对于(变量i=0;i3){
警报(“您不能选择超过3本书”);
返回false;
}否则如果(nbChecked==0){
警报('请至少选中一个复选框!');
返回false;
}否则{
//如果需要,请完成表单提交所需的操作。。。
}
}

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

函数签出(){
const checkbox=document.querySelectorAll('.myCheckBox:checked');
如果(复选框。长度>3){
警报(“您不能选择超过3本书”);
返回false;
}else if(!checkbox.length){
警报('请至少选中一个复选框!');
}
}


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

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;
 }
}
函数签出(){
var checkbox=document.getElementsByClassName('myCheckBox');
var isChecked=false;
var numChecked=0;
对于(变量i=0;i如果((isChecked)&&numChecked您指示是否有复选框,则选中的是布尔标志

var isChecked = false;
...
if(isChecked) {
...
现在,这与询问
isChecked
是否等于1的逻辑相同

你可以同样地计算你遇到复选框的次数,然后只需检查你对复选框的数量是否满意

if ( checkBoxes[i].checked ) {
    //isChecked = true;
    isChecked++;
};
isChecked
现在正在计算它们

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

if(isChecked>0&&isChecked使用带循环的计数器或使用
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 !' );
}
函数签出(){
//总的来说
var checkbox=document.getElementsByClassName('myCheckBox');
变量长度=0;
对于(变量i=0;i3){
警报(“您不能选择超过3个”);
返回false;
}else if(长度==0){
提醒(“请至少检查一个!”);
返回false;
}
提醒('您的书籍已发送到您的邮件!');
}

只需计算您的账户中的支票金额即可loop@krisph我做了我的
document.querySelectorAll(“.myCheckBox:checked”).length
@SteveDoson严格没有Jquery?或者你可以使用Jquery?