具体效果

bootstrap treeView多选的使用

html页面代码 js可以去上篇文章下载

   <div class="form-group" id="funDiv">
                        <div class="col-sm-2 control-label">选择功能</div>
                        <div class="col-sm-10">
                            <input type="text" id="knowledgeText" name="knowledgeText" class="form-control" value=""
                                   onclick="$('#hideDiv').show()" placeholder="分类名称" readonly="readonly"/>
                            <div id="hideDiv" style="display: none;">
                                <div id="knowledgeTree"></div>
                                <button class="btn btn-danger" style="float: right" type="button" onclick="hideDIV()">
                                    <span class="glyphicon glyphicon-eye-open"></span> 确定
                                </button>
                            </div>
                            <input style="display: none" readonly="readonly" id="ids">
                        </div>
                    </div>
<script type="text/javascript" src="${request.contextPath}/statics/libs/bootstrap-treeview.js"></script>

js部分

<script type="text/javascript">
    $(function () {
        getTree(0,0);
    })

    function getChildNodeIdArr(node) {
        var ts = [];
        if (node.nodes) {
            for (x in node.nodes) {
                ts.push(node.nodes[x].nodeId);
                if (node.nodes[x].nodes) {
                    var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
                    for (j in getNodeDieDai) {
                        ts.push(getNodeDieDai[j]);
                    }
                }
            }
        } else {
            ts.push(node.nodeId);
        }
        return ts;
    }
    function getTree(id,nodeId) {
        var data = new FormData();
        data.append("pid",id);
        var  url=baseURL + 'company/functioninfo/page';
        $.ajax({
            type: "post",
            url: url,
            processData: false,  // 告诉jQuery不要去处理发送的数据
            contentType: false,  // 告诉jQuery不要去设置Content-Type请求头
            data: data,
            success: function (r) {
                if (r.code == 0) {
                    if(id == 0){
                        var tree = new Array();
                        $.each( r.page.list,function(index, item){
                            tree[index]={text:item.name,id:item.id};
                        })
                        $('#knowledgeTree').treeview({
                            color: "#428bca",
                            data: tree,
                            showCheckbox: true,
                            multiSelect: false,
                            onNodeChecked: function (event, data) {
                                var selectNodes = getChildNodeIdArr(data); //获取所有子节点
                                if (selectNodes) { //子节点不为空,则选中所有子节点
                                    $('#knowledgeTree').treeview('checkNode', [selectNodes, { silent: true }]);
                                }
                                var parentNode = $("#treeview-checkable").treeview("getNode", data.parentId);
                                setParentNodeCheck(data);
                            },
                            onNodeUnchecked: function (event, data) {
                                var selectNodes = getChildNodeIdArr(data); //获取所有子节点
                                if (selectNodes) { //子节点不为空,则取消选中所有子节点
                                    $('#knowledgeTree').treeview('uncheckNode', [selectNodes, { silent: true }]);
                                }
                            },
                            onNodeSelected: function (event, node) {
                                getTree(node.id,node.nodeId);
                            },
                        });
                    }else {
                        if(typeof($('#knowledgeTree').treeview('getSelected')[0].nodes) != "undefined" ){
                            if($('#knowledgeTree').treeview('getSelected')[0].nodes.length>0)  {
                                return;
                            }
                        }
                        $.each(r.page.list, function (index, item) {
                            var addNodes = new Array();
                            addNodes[0] = nodeId;
                            addNodes[1] = {node: {text: item.name, id: item.id}};
                            $("#knowledgeTree").treeview("addNode", addNodes);
                        });
                    }
                }
            }
        });
    }
    function setParentNodeCheck(node) {
        var parentNode = $("#knowledgeTree").treeview("getNode", node.parentId);
        if (parentNode.nodes) {
            var checkedCount = 0;
            for (x in parentNode.nodes) {
                if (parentNode.nodes[x].state.checked) {
                    checkedCount ++;
                } else {
                    break;
                }
            }
            if (checkedCount === parentNode.nodes.length) {
                $("#knowledgeTree").treeview("checkNode", parentNode.nodeId);
                setParentNodeCheck(parentNode);
            }
        }
    }
    function hideDIV() {

        var listChecked= $('#knowledgeTree').treeview('getChecked');
        var ids = new Array();
        var names="";
        console.log(ids.length);
        $.each(listChecked, function (index, item) {
            var sum = ids.length;
            $.each(ids, function (index, id) {
                if(item.id == id){
                    sum++;
                }
            });
            if(sum == ids.length){
                names = names+','+item.text
                console.log("添加"+item.text);
                ids[sum]=item.id;
            }
        });

        $("#knowledgeText").val(names);
        $("#ids").val(ids);
        $("#hideDiv").hide();
    }
</script>

 

相关文章:

  • 2021-12-04
  • 2021-04-17
  • 2021-10-31
  • 2022-12-23
  • 2021-12-21
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
猜你喜欢
  • 2022-03-06
  • 2022-01-12
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2022-01-21
  • 2022-12-23
相关资源
相似解决方案