限制复选复选框jquery ui很容易

时间:2013-09-13 07:56:57

标签: javascript jquery checkbox

只是想限制复选框的数量,但实际上我的代码在lengh>时禁用所有复选框。 3,什么是错的..

http://jsfiddle.net/mbAwC/11/

$('.limit :checkbox').change(function () {
    var $cs=$(this).closest('.limit').find(':checkbox:checked');
    if ($cs.length > 3) {
        this.checked=false;$('.limit :checkbox').removeAttr('checked').button( "refresh" );
    }
});   

问候 杰斯

4 个答案:

答案 0 :(得分:2)

只需删除removeAttr('checked')

即可
$(function() {
    $(".limit").buttonset();
    $('.limit :checkbox').change(function () {
        var $cs=$(this).closest('.limit').find(':checkbox:checked');
        if ($cs.length > 3) {
            this.checked=false;
            $('.limit :checkbox').button( "refresh" );
        }
    });
});

JSFiddle

答案 1 :(得分:0)

$('.limit :checkbox').removeAttr('checked')错了。它将取消选中您的所有复选框。

也许你的意思是$(this).removeAttr('checked')(但你已经有this.checked=false)?

答案 2 :(得分:0)

将选中设为false,然后致电button('refresh')

$(this).prop('checked', false).button('refresh');

Here's a fiddle

答案 3 :(得分:0)

尝试这种方式:

$(function () {
    $(".limit").buttonset();

    var max = 3;
    var checkboxes = $('input[type="checkbox"]', '.limit');

    checkboxes.change(function () {
        var current = checkboxes.filter(':checked').length;
        checkboxes.filter(':not(:checked)').prop('disabled', current >= max).button('refresh');
    });
});

演示:http://jsfiddle.net/mbAwC/21/