应至少选中一个复选框,并且最多可以选中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;
}
}
但是如何获得最大约束?
非常感谢任何帮助。
答案 0 :(得分:4)
您可以使用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!' );
}
}
&#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;
答案 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之间(含)