如何限制用 JavaScript 选中的复选框的数量(请不要 jquery)
How do I limit the amount of checkbox checked with JavaScript(no jquery please)
我正在做一个 Node Express 多项选择测试,每道题都有不同数量的正确答案。我的答案来自 PUG 中自动填充的数据库。但是,我的函数无法正常工作,当我单击超过正确答案的限制时,会弹出警报,但无论如何都会检查答案。我做错了什么?
我尝试制作一个功能来跟踪检查了多少答案,但在达到限制后无法停止。
block content
header.header USA Government Test
main.q-card
p.q-promt #{question}
small (Please choose #{mcLimit} answers)
hr
each answer in answers
label.container
| #{answer.Answer_prompt}
input(type='checkbox' name='answer' onclick="ckLimit()")
span.checkmark
hr
script.
function ckLimit() {
var limit = #{mcLimit};
var total = 0;
var inputTag = document.getElementsByTagName('input');
var x = inputTag.length;
for (var i = 0; i < x; i++) {
if (inputTag[i].checked) {
total += 1;
}
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return;
}
}
}
一切正常接受:this.checked = false;
它继续检查答案。这是我的代码现在的样子:
header.header USA Government Test
main.q-card
p.q-promt #{question}
small (Please choose #{mcLimit} answers)
hr
each answer in answers
label.container
| #{answer.Answer_prompt}
input(type='checkbox' name='answer' onclick="return ckLimit()")
span.checkmark
hr
script.
function ckLimit() {
var limit = #{mcLimit};
var total = 0;
var inputTag = document.getElementsByTagName('input');
var x = inputTag.length;
for (var i = 0; i < x; i++) {
if (inputTag[i].checked) {
total += 1;
}
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return;
}
}
}
在下面的语句中添加 return
关键字。
input(type='checkbox' name='answer' onclick="ckLimit()")
从而成为
input(type='checkbox' name='answer' onclick="return ckLimit()")
没有return
,onclick
继续允许默认的检查操作。一旦 onclick
获得 false
值,它就会停止操作。
编辑:
在函数ckLimit
中,return
应该returnfalse
。
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return false;
}
我正在做一个 Node Express 多项选择测试,每道题都有不同数量的正确答案。我的答案来自 PUG 中自动填充的数据库。但是,我的函数无法正常工作,当我单击超过正确答案的限制时,会弹出警报,但无论如何都会检查答案。我做错了什么?
我尝试制作一个功能来跟踪检查了多少答案,但在达到限制后无法停止。
block content
header.header USA Government Test
main.q-card
p.q-promt #{question}
small (Please choose #{mcLimit} answers)
hr
each answer in answers
label.container
| #{answer.Answer_prompt}
input(type='checkbox' name='answer' onclick="ckLimit()")
span.checkmark
hr
script.
function ckLimit() {
var limit = #{mcLimit};
var total = 0;
var inputTag = document.getElementsByTagName('input');
var x = inputTag.length;
for (var i = 0; i < x; i++) {
if (inputTag[i].checked) {
total += 1;
}
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return;
}
}
}
一切正常接受:this.checked = false; 它继续检查答案。这是我的代码现在的样子:
header.header USA Government Test
main.q-card
p.q-promt #{question}
small (Please choose #{mcLimit} answers)
hr
each answer in answers
label.container
| #{answer.Answer_prompt}
input(type='checkbox' name='answer' onclick="return ckLimit()")
span.checkmark
hr
script.
function ckLimit() {
var limit = #{mcLimit};
var total = 0;
var inputTag = document.getElementsByTagName('input');
var x = inputTag.length;
for (var i = 0; i < x; i++) {
if (inputTag[i].checked) {
total += 1;
}
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return;
}
}
}
在下面的语句中添加 return
关键字。
input(type='checkbox' name='answer' onclick="ckLimit()")
从而成为
input(type='checkbox' name='answer' onclick="return ckLimit()")
没有return
,onclick
继续允许默认的检查操作。一旦 onclick
获得 false
值,它就会停止操作。
编辑:
在函数ckLimit
中,return
应该returnfalse
。
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return false;
}