添加搜索框:

<div class="ibox" style="margin-bottom: 0">      
	 <div>
	     <input type="text" class="empty" id="keyword" maxlength="50" placeholder="关键字搜索"
	            style="width: 180px;background: #223e4a">
	     <button class="btn" id="btn" onclick="searchNode('tree','name')"
	             style="background: #1e7894;padding: 3px 10px;font-size: 12px;"> 搜索
	     </button>
	 </div>
	 <div class="ibox-content" style="overflow: scroll;height: 28vw">
	     <div id="tree" class="ztree"></div>
	 </div>
</div>

var setting = {
	   async: {
	        enable: true, // 异步加载
	        url:ctx + "system/dept/treeData",
	        autoParam:["id", "name=n", "level=lv"]
	    },
	    data: {
	        key: {
	            title: "title"         // 节点数据保存节点提示信息的属性名称
	        },
	        simpleData: {
	            enable: true           // true / false 分别表示 使用 / 不使用 简单数据模式
	        }
	    },
	    callback: {
	        onRightClick: zTreeOnRightClick
	    },
	    view :{
	        showIcon: false,
	        fontCss: getFontCss
	    }
};
$(function () {
	  $.fn.zTree.init($("#tree"), setting);
});
function zTreeOnRightClick(event, treeId, treeNode) {
   if (treeNode.level && treeNode.level >= 4) {
        var selectedId = treeNode.id;
    }
}

搜索方法:

//使用搜索数据 加高亮显示功能,需要2步
//1.在tree的setting 的view 设置里面加上 fontCss: getFontCss 设置
//2.在ztree容器上方,添加一个文本框,并添加onkeyup事件,该事件调用固定方法 changeColor(id,key,value)
// id指ztree容器的id,一般为ul,key是指按ztree节点的数据的哪个属性为条件来过滤,value是指过滤条件,该过滤为模糊过滤
function searchNode(treeId,key){
    var value = $("#keyword").val();
    var treeObj = $.fn.zTree.getZTreeObj(treeId);
    // treeObj.expandAll(true);
    var nodeList = treeObj.getNodesByParamFuzzy(key, value);
    updateNodes(false);
    if(value != ""){
        if(nodeList && nodeList.length>0){
            updateNodes(true);
        }
    }
    function updateNodes(highlight) {
        if (highlight == false) {
            var nodes = treeObj.transformToArray(treeObj.getNodes());
            for( var i=0; i<nodes.length; i++) {
                nodes[i].highlight = highlight;
                treeObj.updateNode(nodes[i]);
            }
        }else{
            for( var i=0; i<nodeList.length; i++) {
                nodeList[i].highlight = highlight;
                treeObj.updateNode(nodeList[i]);
            }
        }
    }
}
function getFontCss(treeId, treeNode) {
    return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#fff", "font-weight":"normal"};
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐