至少在复选框组中的复选框可视(!)选中

时间:2015-08-06 07:14:31

标签: javascript jquery checkbox

我正在寻找一种方法,至少在复选框上选中一组复选框。 我能找到的唯一的东西是验证IF的方法至少选中了一个复选框,但是你总是能够检查/取消选中最后一个复选框 - 有没有办法确保当用户点击复选框时至少有一个复选框必须保持检查(并且只有在选中至少两个复选框时才可以取消选中其中一个)?

感谢您的帮助! VIN

2 个答案:

答案 0 :(得分:2)

复选框的“更改”值,所以最好听一听。请记住,“点击”只会处理鼠标点击,因此仍然可以更改val / enter或空格键。为了便于访问,我坚持使用onchange.

Fiddle

Updated Fiddle

JS

$(function () {
    $('.cbClassSegments').on('change', function (e) {

        !$(this).siblings(':checked').length &&
            $(this).prop('checked', true) &&
                e.preventDefault();

        // move assignment down and prevent default action 
        cbObjSegments[this.id] = this.checked;
        console.log(valuesTrueInObject(cbObjSegments));

    })
})

HTML

<input type="checkbox" value="1" checked>
<input type="checkbox" value="1">
<input type="checkbox" value="1">

答案 1 :(得分:1)

尝试以下方法:

$('input[type="checkbox"]').click(function(event) {
    var atLeastOneIsChecked = $('input[name="name"]:checked').length;

    if(atLeastOneIsChecked<1){ 
           event.preventDefault();
    }
});

查看this fiddle