0

我正在使用 jQuery 插件CheckTree,我可以根据单选按钮自动选择一些复选框。

我有两个单选按钮:

  1. 当我们点击默认单选按钮时,一些复选框必须检查,它必须是只读的,其余的复选框必须禁用(只读)

  2. 当我们单击自定义按钮时,必须取消选中所有复选框

这是一个小提琴

以下是我迄今为止尝试过的代码:

<script>
    $(function() {
        $('.check-all').live('change', function() {
            //      $('.tree').find('input[class=cus]').attr('checked', true);
            $('.tree').find('input[class=def]').attr('checked', false);
            //      $('ul.tree').find('input.cus').siblings("div.checkbox").click();
            $('ul.tree').find('input.def').siblings("div.checkbox").click();
        });
        $('.uncheck-all').live('change', function() {
            //  $('.tree').find('input[class=cus]').attr('checked',false);
            $('.tree').find('input[class=def]').attr('checked', true);
            $('ul.tree').find('input.def').siblings("div.checkbox").click();
        });
    });
</script>
<div class="b2"><b>Define categories </b>
</div>
</div>
<form action="http://localhost:8080/cgi-bin/cat_checkbox.pl" method="POST"
name="form1">
    <div class="options">
        <ul>
            <label>
                <input type="radio" name="Selection" class="check-all" value="Default"
                id="type_0" checked="checked" />Default</label>
            <label>
                <input type="radio" name="Selection" class="uncheck-all" value="Custom"
                id="type_1" />Custom</label>
        </ul>
        <ul class="tree">
            <li>
                <input type="checkbox">
                <label>Select All</label>
                <ul>
                    <li>
                        <input type='checkbox' value='1'>
                        <label style="" alt="">main1</label>
                        <ul>
                            <li>
                                <input type='checkbox' name='chk_0' class="def" value='1'>
                                <label>option1</label>
                            </li>
                            <li>
                                <input type='checkbox' name='chk_1' class="def" value='1'>
                                <label>option1</label>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <input type='checkbox' name='' id='10' value='1'>
                        <label>main2</label>
                        <ul>
                            <li>
                                <input type='checkbox' class="cus" name='' id='chk_7' ' value='1 '>  <label>option1</label></li>
        <li><input type='checkbox ' class="cus" name='chk_4 ' id='chk_8
                                ' value='1 '> <label>option1</label></li>
        <li><input type='checkbox ' class="cus" name='chk_5 ' id='chk_9
                                ' value='1 '><label>option1</label></li>
    </ul>
    </li>
    <li><input type='checkbox ' name=' ' id='10 ' value='1 '><label>main3</label>
        <ul style="width: 90%">
        <li><input type='checkbox ' class="cus" name=' ' id='chk_7 '' value='1'>
                                <label>option1</label>
                            </li>
                            <li>
                                <input type='checkbox' class="cus" name='chk_4' id='chk_8' value='1'>
                                <label>option1</label>
                            </li>
                            <li>
                                <input type='checkbox' class="cus" name='chk_5' id='chk_9' value='1'>
                                <label>option1</label>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <input type='checkbox' name='' id='10' value='1'>
                        <label>main3</label>
                        <ul style="width: 90%">
                            <li>
                                <input type='checkbox' class="def" name='' id='chk_7' ' value='1 '><label>option1</label></li>
        <li><input type='checkbox ' class="def" name='chk_4 ' id='chk_8
                                ' value='1 '><label>option1</label></li>
        <li><input type='checkbox ' class="def" name='chk_5 ' id='chk_9
                                ' value='1 '><label>option1</label></li>
    </ul>
    </li>
    <li><input type='checkbox ' name=' ' id='10 ' value='1 '><label>main3</label>
        <ul style="width: 90%">
        <li><input type='checkbox ' class="cus" name=' ' id='chk_7 '' value='1'>
                                <label>option1</label>
                            </li>
                            <li>
                                <input type='checkbox' class="cus" name='chk_4' id='chk_8' value='1'>
                                <label>option1</label>
                            </li>
                            <li>
                                <input type='checkbox' class="cus" name='chk_5' id='chk_9' value='1'>
                                <label>option1</label>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
4

3 回答 3

1

试试:http: //jsfiddle.net/eRj5c/5/

$(function() {
 $('.check-all').on('change', function(){
        $('.tree').find('input[class=cus]').prop('checked', true);
        $('.tree').find('input[class=def]').prop('checked',false);
        $('.tree').find('input').prop('disabled', 'disabled');
        $('ul.tree').find('input.cus').siblings("div.checkbox").click();
        $('ul.tree').find('input.def').siblings("div.checkbox").click();
 });
 $('.uncheck-all').on('change', function(){
    $('.tree').find('input').prop('checked', true).removeAttr('disabled');
    $('ul.tree').find('input.def').siblings("div.checkbox").click();
 });
 $('.check-all').change();
});
于 2013-01-30T13:03:00.520 回答
0

试试这个:http: //jsbin.com/oteduf/1/edit

html

<input type="radio" name="Selection" class="check-all" value="Default" id="type_0" />

jQuery

 $(function() {
    $(document).on('change', '.check-all', function(){
       $('.tree').find('input[class=def]').prop('checked',true);
       $('ul.tree').find('input.def').siblings("div.checkbox").click();
    });
    $(document).on('change', '.uncheck-all', function(){
       $('.tree').find('input[class=def]').prop('checked', false);
       $('ul.tree').find('input.def').siblings("div.checkbox").click();
    });
 });    
于 2013-01-30T13:10:07.037 回答
0

这应该做我认为你想要实现的......

function reset() {
    $('.tree').find('input').prop('checked', false).prop('disabled', true);
    $('.tree').find('input.def').prop('checked', true);
}

reset();

$('.check-all').on('click', function(){
    reset();
});

$('.uncheck-all').on('click', function(){
    $('.tree').find('input').prop('checked', false).prop('disabled', false);       
});
于 2013-01-30T12:59:16.813 回答