如何限制用 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()")

没有returnonclick继续允许默认的检查操作。一旦 onclick 获得 false 值,它就会停止操作。


编辑:

在函数ckLimit中,return应该returnfalse

if (total > limit) {
    alert(`Please select only ${limit}`);
    this.checked = false;
    return false;   
}