欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

zTree复选框案例

程序员文章站 2024-02-05 12:56:22
...

一.配置树参数

//1.获取setting值
function getSetting(){
		 var setting = {
			view: {
			    dblClickExpand: true,
				selectedMulti : true,//可以多选
				showLine: true
			},
			check: {  
			    enable: true ,//显示复选框  
			    chkStyle : "checkbox"
			},
			data: {
				key: {
				    title:"t"
				},
				simpleData: {
					enable: true,
					idKey: "id",
					pIdKey: "pId",
					rootPId: null
					}
				},
				callback: {
					onCheck: onCheck
				}
		  	};
		 return setting;
}

二.初始化树(创建树)

//2.创建树
	 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();
	 }

zTree复选框案例

三.选中一开始被选中的(初始化一开始就选了的内容)

//3.初始化被选中的物资类别
	 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);
		             }
				 }
			 }
		 }
	 }

zTree复选框案例 zTree复选框案例

四.树的回调事件(保存选择的复选框内容)

//4.树的点击事件回调函数
	 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);
	 }

五.保存所选内容

 //5.保存所选物资类别
	 function saveMaterial(inputName){
		 //获取父页要修改input元素
		 var $input=parent.$("input[name="+inputName+"]");
		 //获取选中的物资类别名称
		 var className=$("#classNames").val();
		 var classCode=$("#classCodes").val();
		 //截取掉多余的“,”
		 var classNames=className.substring(1,className.length+1);
		 //截取掉多余的“,”
		 var classCodes=classCode.substring(1,classCode.length+1);
	     //修改所选的物资类别名字
	     $input.val(classNames);
	     //修改所选的物资类别编码
	     $input.attr("classCodes",classCodes);
	     $input.next().val(classCodes);
	     //关闭弹窗
	     parent.layer.closeAll();
	 }

六.关闭弹窗

 //6.关闭弹窗
	 function closeMaterial(){
		 parent.layer.closeAll();
	 }

 

相关标签: zTree 复选框