javascript - 多个复选框中的一个应始终保持未选中状态

标签 javascript jquery checkbox

有很多关于 JavaScript 和条件检查复选框的主题,但我还没有找到符合我的情况的主题。

我的用例:我生成了多行,每行都有复选框,假设数字是n。现在用户应该只能检查其中的n-1。换句话说,当我们有 4 个复选框并且选中了 4 个复选框中的 3 个时,应禁用最后一个复选框。当仅选中 4 个中的 2 个时,所有复选框均可用。

我已经尝试过:

var $checks = $('input:checkbox').click(function (e) {
        var numChecked = $checks.filter(':checked').length;
        var lastUnchecked = $checks.prop('checked', false);

        if (numChecked = $checks.length - 1) {
            lastUnchecked.disabled = true;
        }
        else {
            //enable checkbox that was disabled before
            lastUnchecked.disabled = false;
        }
    });

但这不起作用,因为 var lastUnchecked = $checks.prop('checked', false); 返回所有复选框,而不仅仅是未选中的

最佳答案

试试这个。

逻辑:更改时,首先重新/启用所有复选框。然后根据检查的数量重新确定是否需要禁用任何内容。

var table = $('table'), cbs = $(':checkbox');
table.on('change', ':checkbox', function(evt) {
    cbs.prop('disabled', false);
    if (cbs.filter(':checked').length == cbs.length - 1) 
        cbs.not(':checked').prop('disabled', 1);
})

Fiddle .

关于javascript - 多个复选框中的一个应始终保持未选中状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36432700/

相关文章:

javascript - Es6 将对象键值转换为单个对象的方法

javascript - 增加 Action 创建器中的变量

javascript - 目标 ID 而不是 <li>

javascript - 如何用html5 canvas绘制一个连续的圆形图案

javascript - 如果所有复选框都被选中,则执行此操作,否则执行此操作(jQuery)

javascript - 使用 JS (ES6) 切换 Accordion /标签的问题

javascript - 使用 javascript/jQuery 将随机数生成到文本输入中

javascript - setTimeout 不适用于 window.location?

java - 如何将自定义复选框添加到 JList (Java) 中?

jquery - list-group-item 内的 bootstrap 4 复选框无法正常工作