zTree多选框模糊查询

2 篇文章 0 订阅

一.设置seting的view属性

view: {
    dblClickExpand: true,
	selectedMulti : true,//可以多选
	showLine: true,
	fontCss: function (treeId, treeNode) {//设置高亮显示颜色和普通显示颜色
	    return (!!treeNode.highlight) ? {color: "#A60000", "font-weight": "bold"} : {
		    color: "#000", "font-weight": "normal"
		    };
		}
	}

二.CSS关键代码

<input type="text" id="materialClass"  oninput="searchMaterial();"  name="materialClass" maxlength="40" placeholder="关键字">
<div class="ztree" id="materialTree" ></div>

二.JS关键代码

function createTree(treeId,dL,dLSize){
		 //获取树参数默认值
		 var setting=getSetting();
		 var zNodes=new Array();
		 //设置根节点数据
		 zNodes[0]={ id:'##', pId:"-1", name:'物资类别', t:'物资类别',open:true};
		 for(var i=0;i<dLSize;i++){//设置子节点数据
			zNodes[i+1]={ id:dL[i].classCode, pId:dL[i].parentCode, name:dL[i].className+"("+dL[i].classCode+")",classId:dL[i].classId, t:dL[i].className};
		 }
		 //1)创建zTree树
		 $.fn.zTree.init($(treeId), setting, zNodes);
		 //2)初始化已经被选中的物资类别
		 checkMaterial();
	 }

function checkMaterial(){
		 var classCodes = $("#classCodes").val();//物资编码
		 var datalist = classCodes.split(",");//将物资编码打散成数组
		 //获取所有树节点
		 var treeObj = $.fn.zTree.getZTreeObj("materialTree");
		 if(datalist!='' &&datalist.length>0){
			 var nodes=treeObj.getNodes();//获取所有子节点
			 for(var i=0;i<datalist.length;i++){
				 //通过id查找节点
				 var node = treeObj.getNodeByParam("classId",datalist[i],null);
				 //选中该节点
				 if(node!=null){//先判断节点是否为空
					 //选中该节点
					 treeObj.checkNode(node,true,true);
				     //获取该节点父节点
					 var parent = node.getParentNode();
		             if(!parent.open){//如果父节点没有展开则展开父节点
		            	 treeObj.expandNode(parent,true,true);
		             }
				 }
			 }
		 }
	 }

function onCheck(event, treeId, treeNode){
		 var classCodes = $("#classCodes").val();//物资编码
		 var classNames = $("#classNames").val();//物资名字
		 //alert("onCheck");
		 //获取所有树节点
		 var treeObj = $.fn.zTree.getZTreeObj("materialTree");
		 if(treeNode.checked){//如果是选中节点
			 if(treeNode.isParent){//如果选中的是父节点(有子节点的节点)
				 //获取选中的父节点的所有子节点
				 var childrenNodes = treeNode.children;
				 for (var i = 0; i < childrenNodes.length; i++) {
					 classCodes+=","+childrenNodes[i].classId;
					 classNames+=","+childrenNodes[i].name;
	             } 
			 }else{//如果是子节点(无子节点的节点)
				 classCodes += ","+treeNode.classId;
				 classNames += ","+treeNode.name;
			 }
		 }else{//如果是取消选中
			 if(treeNode.isParent){//如果取消的是父节点(有子节点的节点)
				 //获取消的父节点的所有子节点
				 var childrenNodes = treeNode.children;
				 for (var i = 0; i < childrenNodes.length; i++) {
					 var classCode=","+childrenNodes[i].classId;
					 var className=","+childrenNodes[i].name;
					 //删除取消的节点对应的数据
					 classCodes=classCodes.replace(classCode, "");
					 classNames=classNames.replace(className, "");
	             }
			 }else{//如果是子节点(无子节点的节点)
				 classCode = ","+treeNode.classId;
				 className = ","+treeNode.name;
				 //删除取消的节点对应的数据
				 classCodes=classCodes.replace(classCode, "");
				 classNames=classNames.replace(className, "");
			 }
		 }
		 //保存选中的值(物资类别编码、物资类别名字)
		 $("#classCodes").val(classCodes);
		 $("#classNames").val(classNames);
	 }


function searchMaterial(){
		//初始化树
		createTree("#materialTree",${classListJson},${classListSzie});
		//获取所有树对象
		var zTree = $.fn.zTree.getZTreeObj("materialTree");
		//获取查询参数
		var materialClass=$.trim($("#materialClass").val());
		if(materialClass != ""){
			//模糊查询节点
			var nodes = zTree.getNodesByParamFuzzy("name", materialClass, null);
			if (nodes.length>0) {
				for(var i=0;i<nodes.length;i++){
					//设置高亮
					nodes[i].highlight = true;
					//更新节点
					zTree.updateNode(nodes[i]);
					zTree.expandNode(nodes[i].getParentNode(), true, null, null, false);
				}
			}
		}
	 }

三.实现效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Vue项目中使用zTree实现模糊搜索的步骤如下: 1. 创建一个Vue项目,可以使用vue-cli来快速搭建。 2. 引入zTree插件,可以通过npm安装或者直接下载js文件并引入到项目中。 3. 在Vue组件中使用zTree,并创建一个树形结构。 4. 在zTree的配置项中,添加一个回调函数来实现模糊搜索的功能。这个回调函数可以是官方提供的模糊搜索函数fuzzySearch的修改版,根据自己的需求进行相应的修改。 5. 在模糊搜索的回调函数中,可以通过遍历树的节点,使用正则表达式匹配搜索关键字并将匹配到的节点高亮显示。 6. 参考一些资料,如官方文档或者其他人的经验,来帮助理解和实现zTree模糊搜索功能。 以上是使用zTree实现模糊搜索的大致步骤,具体的代码实现和配置可能有所不同,可以根据自己的需求和实际情况进行相应的修改和调整。引用提供了一个具体的实现步骤和效果图,引用提供了zTree在Vue项目中使用的参考资料,引用提供了关于模糊搜索功能的一些修改方法的参考资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在vue-cli项目中使用ztree,并实现ztree模糊搜索高亮](https://blog.csdn.net/weixin_44101052/article/details/90372593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [实例详解ztree在vue项目中使用并且带有搜索功能](https://download.csdn.net/download/weixin_38610870/12953434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue2.x + zTree,简单的二次封装(二) -- 添加模糊搜索功能](https://blog.csdn.net/mf_717714/article/details/126864127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值