js結構樹zTree改造帶搜索框

先上效果圖:

代碼如下:

 1、html:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta name="renderer" content="webkit">
  <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no minimal-ui">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>圖紙Tree</title>
  <style >
    .tree-content
{
    display: block;
    position: absolute;
    height: auto;
    left: 0 !important;
    top: 8px !important;
    background: #ffffff;
    z-index: 9999999;
    //border: 1px solid #C9C9C9 !important;
    overflow-y: auto;
}
  </style>
  <!--<link rel="stylesheet" href="layui/css/layui.css" />
  <script type="text/javascript" src="layui/layui.js"></script>-->
  <link rel="stylesheet" type="text/css" href="ztree/css/zTreeStyle/zTreeStyle.css">
  <script src="jq/jquery.min.js"></script>
  <script type="text/javascript" src="ztree/js/jquery.ztree.all.js"></script>
  <script type="text/javascript" src="plugin/js/selectTreeM.js"></script>
</head>
<body>
  <div>選擇的是:<input id = "xmtShow" type="text" value = "" style="margin-left:10px;margin-top:10px;width: 160px;"></input></div>
  <div class = "tree-content scrollbar" style = "margin-top: 40px;">
    <input hidden id="xmtHide" name="xmt">
    <input id="xmtQuery" type="text" value="" style="margin-left:10px;margin-top:10px;height:18px;line-height:18px;vertical-align:bottom;">
    <input id="xmtQbut" class="xmtQbut" type="button" value="查詢">
    <input id="xmtCbut" class="xmtQbut" type="button" value="重置">
    <ul id="xmtTree" class="ztree scrollbar" style="margin-top:0;">
    </ul>
  </div>
  <script type="text/javascript">
    var zNodes = [{id: 1,name: "一級標題1",pId: 0,open:true
      }, {id: 2, name: "一級標題2",pId: 0,open:true
      }, {id: 3, name: "2.1級標題",pId: 2
      }, {id: 4, name: "2.2級標題",pId: 2
      }, {id: 5, name: "1.1級標題", pId: 1
      }, {id: 6, name: "1.2級標題",pId: 1
      }, {id: 7, name: "1.21級標題",pId: 6
      }, {id: 8, name: "一級標題3",pId: 0
      }, {id: 9, name: "1.22級標題",pId: 6
      }, {id: 10, name: "1.221級標題", pId: 9
      }, {id: 11, name: "1.2211級標題", pId: 10
      }, {id: 12, name: "1.2212級標題", pId: 10 } ];
    
     $(document).ready(function (){
        initTree("xmtTree",zNodes,myClick,false);
        var setting = {
                    view: {
                        dblClickExpand: false,
                        showLine: false
                     },
                     data: {
                        simpleData: {
                            enable: true
                        }
                    },
                    check: {
                        enable: false,
                        chkboxType: { "Y": "ps", "N": "s" }
                    },
                    callback: {
                        onClick: myClick,
                        onCheck: onCheck
                    }
                };
        $("#xmtQbut").on('click',function(){//查詢項目
                    var keyword=$("#xmtQuery").val();
                    var zNodeQuery=[];
                    if(keyword!=""){
                        for(var i=0;i<zNodes.length;i++){
                            if(zNodes[i].name.indexOf(keyword)!=-1){
                                zNodeQuery.push(zNodes[i]);
                            }
                        }
                    }
                    $("#xmtTree").empty();
                    //alert("123");
                    $.fn.zTree.init($("#xmtTree"), setting, zNodeQuery);
                });

                $("#xmtCbut").on('click',function(){//重置項目
                    $("#xmtQuery").val("");
                    $.fn.zTree.init($("#xmtTree"), setting, zNodes);
                });
     })
    
    function myClick(event, treeId, treeNode){
        console.log(event);
        console.log(treeNode);
        var deptId = treeNode.id;
        console.log(deptId);
        var zTree = $.fn.zTree.getZTreeObj(treeId);
        var names = "";
      var ids = "";
      var nodes;
      if (zTree.setting.check.enable == true) {
         zTree.checkNode(treeNode, !treeNode.checked, false);
         nodes = zTree.getCheckedNodes();
      } else{
         nodes = zTree.getSelectedNodes();
      }
      for (var i = 0, l = nodes.length; i < l; i++) {
        names += nodes[i].name + ",";
        ids += nodes[i].id + ",";
      }
      if (names.length > 0) {
        names = names.substring(0, names.length - 1);
        ids = ids.substring(0, ids.length - 1);
      }
      console.log("names = "+names+",ids = "+ids);
      $("#xmtHide").attr("value",names);
      $("#xmtHide").attr("ids",ids);
      $("#xmtShow").attr("value",names);
      $("#xmtShow").attr("ids",ids);
     }
  </script>
</body>
</html>

2、selectTreeM.js:封裝一個針對點擊click和初始化的函數js

function onClick(event, treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj(treeId);
    var names = "";
    var ids = "";
    var nodes;
    if (zTree.setting.check.enable == true) {
       zTree.checkNode(treeNode, !treeNode.checked, false);
       nodes = zTree.getCheckedNodes();
    } else{
       nodes = zTree.getSelectedNodes();
    }
    for (var i = 0, l = nodes.length; i < l; i++) {
       names += nodes[i].name + ",";
       ids += nodes[i].id + ",";
    }
    if (names.length > 0) {
        names = names.substring(0, names.length - 1);
        ids = ids.substring(0, ids.length - 1);
    }
    $("#xmtHide").attr("value",names);
    $("#xmtHide").attr("ids",ids);
    $("#xmtShow").attr("value",names);
    $("#xmtShow").attr("ids",ids);
}

function onCheck(event, treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj(treeId);
    var nodes = zTree.getCheckedNodes();
    var names = "";
    var ids = "";
    for (var i = 0, l = nodes.length; i < l; i++) {
        names += nodes[i].name + ",";
        ids += nodes[i].id + ",";
    }
    if (names.length > 0) {
        names = names.substring(0, names.length - 1);
        ids = ids.substring(0, ids.length - 1);
    }
}

function initTree(fullTreeId,zNodes,myClick,isMultiple,chkboxType){
  var setting = {
        view: {
            dblClickExpand: false,
            showLine: false
        },
        data: {
            simpleData: {
                enable: true
            }
        },
        check: {
            enable: false,
            chkboxType: { "Y": "ps", "N": "s" }
        },
        callback: {
            onClick: myClick? myClick : onClick,
            onCheck: onCheck
        }

    };
    if (isMultiple) {
        setting.check.enable = isMultiple;
    }
    if (chkboxType !== undefined && chkboxType != null) {
        setting.check.chkboxType = chkboxType;
    }
     $.fn.zTree.init($("#" + fullTreeId ), setting, zNodes);
}

zTree的源碼上傳到百度雲

https://pan.baidu.com/s/15mIxwPRwsUP5CYz_a_8_ag

提取碼:zzuz

注意這裏只傳入了onclick的方法,oncheck方法也需要重寫的情況請自己參看onclick如何寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章