【发布时间】:2018-04-12 13:09:36
【问题描述】:
我有一个 JavaScript 函数来检查复选框是否被选中。
如果是,则计算选中了多少个复选框,并检查是否达到了选中的最大数量(4)。
事情是这样的:
当我尝试选中第五个时,如何使该功能显示警报并禁用所有未选中的复选框?
即使是尝试检查为 5 的那个。
function ChkValidate() {
var chkDytLek = document.getElementById("ChkDytLek");
var chkDytUSD = document.getElementById("ChkDytUSD");
var chkDytEU = document.getElementById("ChkDytEU");
var chkDytCAD = document.getElementById("ChkDytCAD");
var chkDytCHF = document.getElementById("ChkDytCHF");
var chkDytAUD = document.getElementById("ChkDytAUD");
var chkDytGBP = document.getElementById("ChkDytGBP");
var MaxCount = 0
var unCheckedCount = 0
if (chkDytLek.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (ChkDytUSD.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (ChkDytEU.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (ChkDytCAD.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (ChkDytCHF.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (ChkDytGBP.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (ChkDytAUD.checked == true) {
MaxCount = MaxCount + 1
if (MaxCount == 4) {
disableIfNotChecked();
}
} else {
unCheckedCount = unCheckedCount + 1
}
if (unCheckedCount >= 4) {
enableIfNotChecked();
}
}
当前代码显示警报并在计数为 4 时禁用复选框。
当我希望这发生在 5 时,但如果我改变这个:
if (MaxCount == 4) {
disableIfNotChecked();
到:
if (MaxCount == 5) {
disableIfNotChecked();
代码将禁用复选框,但也会选中被选为 5 的复选框。
知道如何解决这种情况吗?
【问题讨论】:
-
我猜你是在复选框的检查事件上调用 ChkValidate(),你能发布那个代码吗?这就是您需要取消选中您当前选中的框的地方,可能是通过从 ChkValidate() 返回 false 或其他内容
-
标签: javascript checkbox