zTree下拉框 省市联动 后台交互

ztree下拉框的简单实现(这里是单选) 

注释中为我想到的省市联动的实现,有问题欢迎指出

  $(document).ready(function(){
       $.fn.zTree.init($("#treeDemo"), 	setting1);
       $.fn.zTree.init($("#treeDemo2"), setting2);
   });    	

/*zTree*/
	var setting1 = { 
	   	 check: {
				enable: true,
				chkStyle: "radio",
				radioType: "all"
		 },
       data: {    
           	simpleData: {    
                     enable: true,
	     			  idKey: "id",
	    			  pIdKey: "pId",
	    			  rootPId: 0
           }    
       }    ,
		async: { 
			
           enable: true,    
           url:context +"/stdataType/getStdataTypeForManage.do",    
			autoParam:["id", "name=n", "level=lv"],
			//otherParam:{"otherParam":"zTreeAsyncTest"},    
			dataType: "text",//默认text  
			//type:"get",//默认post  
           dataFilter: filter  //异步返回后经过Filter  
       } ,
       callback:{  
    	   //beforeAsync: beforeAsync,      		//异步加载事件之前得到相应信息   
           asyncSuccess: zTreeOnAsyncSuccess,	//异步加载成功的fun    
           asyncError: zTreeOnAsyncError,   	//加载错误的fun    
           beforeCheck :beforeClick, 			//捕获单击节点之前的事件回调函数*/
   			onClick: onClick,
			onCheck: onCheck
       }  
   }; 
	/*省份列表Tree*/
	var setting2 = { 
		   	 check: {
					enable: true,
					chkStyle: "radio",
					radioType: "all"
			 },
	       data: {    
	           	simpleData: {    
	                     enable: true,
		     			  idKey: "id",
		    			  pIdKey: "pId",
		    			  rootPId: 0
	           }    
	       }    ,
			async: { 
	           enable: true,    
	           url:context +"/stdata/getProvinceInfoAll.do",    
				autoParam:["id", "name=n", "level=lv"],
				//otherParam:{"otherParam":"zTreeAsyncTest"},    
				dataType: "text",//默认text  
				//type:"get",//默认post  
	           dataFilter: filter  //异步返回后经过Filter  
	       } ,
	       callback:{  
	    	   //beforeAsync: beforeAsync,      		//异步加载事件之前得到相应信息   
	           	asyncSuccess: zTreeOnAsyncSuccess,	//异步加载成功的fun    
	           	asyncError: zTreeOnAsyncError,   	//加载错误的fun    
	           	beforeCheck :beforeClick, 
	   			onClick: onClick2,
				onCheck: onCheck2
	       }  
	   };
	
	/*城市列表Tree*/
//	var setting3 = { 
//  	 check: {
//				enable: true,
//				chkStyle: "radio",
//				radioType: "all"
//		 },
//		 view: {
//				dblClickExpand: false
//			},
//		data: {    
//          	simpleData: {    
//                    enable: true,
//	     			  idKey: "id",
//	    			  pIdKey: "pId",
//          }    
//      },
//      callback:{  
//   	   //beforeAsync: beforeAsync,      		//异步加载事件之前得到相应信息   
//          	beforeCheck :beforeClick, 
//  			onClick: onClick3,
//			onCheck: onCheck3
//      }  
//  };

	function beforeClick(treeId,treeNode){  
		if(treeNode.isParent){  
	        alert("请选择子节点");  
	        return false;  
	    }else{  
	        return true;  
	    }  
	}  
	
  function onClick(e, treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj("treeDemo");
		zTree.checkNode(treeNode, !treeNode.checked, null, true);
		return false;
	  }
  function onClick2(e, treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj("treeDemo2");
		zTree.checkNode(treeNode, !treeNode.checked, null, true);
		return false;
	  }
//  function onClick3(e, treeId, treeNode) {
//		var zTree = $.fn.zTree.getZTreeObj("treeDemo3");
//		zTree.checkNode(treeNode, !treeNode.checked, null, true);
//		return false;
//	  }

  function onCheck(e, treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
  			nodes = zTree.getCheckedNodes(true),
  			id="",
  			v = "";
		for (var i=0, l=nodes.length; i<l; i++) {
			v += nodes[i].name + ",";
			id += nodes[i].id + ",";
		}
		if (v.length > 0 ) v = v.substring(0, v.length-1);
		if (id.length > 0 ) id = id.substring(0, id.length-1);
		var nameObj = $("#ztreesnames"),
			idObj = $("#ztreeids");
			nameObj.attr("value", v);
			idObj.attr("value", id);
  }
//  var zNodes3
  function onCheck2(e, treeId, treeNode) {
	  debugger;
		var zTree = $.fn.zTree.getZTreeObj("treeDemo2"),
		nodes = zTree.getCheckedNodes(true),
		id="",
		v = "";
		for (var i=0, l=nodes.length; i<l; i++) {
			v += nodes[i].name + ",";
			id += nodes[i].id + ",";
		}
		if (v.length > 0 ) v = v.substring(0, v.length-1);
		if (id.length > 0 ) id = id.substring(0, id.length-1);
		var nameObj = $("#pronames"),
			idObj = $("#proids");
		nameObj.attr("value", v);
		idObj.attr("value", id);
//		var pronames = $('#pronames').val();
//		var param = {
//				pronames : pronames,
//			};
//		$.ajax({
//			url  : context +"/stdataType/getMenuForCity.do",
//			type : 'POST',
//			data : param,
//			success : function(data) {
//				zNodes3=data
//				 $(document).ready(function(){
//					  debugger;
//				       $.fn.zTree.init($("#treeDemo3"), setting3,zNodes3);
//				   });    	
//
//			}
//		})
	}
  
  function linkClick(event, treeId, treeNode) { 
	  var param = $('#pronames').val(); //获得点击树的ID
	  var otherTree = $.fn.zTree.getZTreeObj(treeId); // 选取树的所有节点
	  var nodes = otherTree.getNodesByParam(param); //遍历树的节点
	  for (var i in nodes) {
		  if(param==nodes[i].id){ 
			  otherTree.selectNode(nodes[i]);
			  return; 
		  } 
	  } 
  }

//  function onCheck3(e, treeId, treeNode) {
//		var zTree = $.fn.zTree.getZTreeObj("treeDemo3"),
//		nodes = zTree.getCheckedNodes(true),
//		id="",
//		v = "";
//		for (var i=0, l=nodes.length; i<l; i++) {
//			v += nodes[i].name + ",";
//			id += nodes[i].id + ",";
//		}
//		if (v.length > 0 ) v = v.substring(0, v.length-1);
//		if (id.length > 0 ) id = id.substring(0, id.length-1);
//		var nameObj = $("#citynames"),
//			idObj = $("#cityids");
//		nameObj.attr("value", v);
//		idObj.attr("value", id);
//	}


	function treeIds(){                      //这是将选中的节点的id用;分割拼接起来,用于持久化到数据库  
		   var zTreeO =  $.fn.zTree.getZTreeObj("treeDemo"), 
	   		nodesO = zTreeO.getCheckedNodes(true),
	   		idListStr = "";
	   for (var i=0, l=nodesO.length; i<l; i++) {
		   idListStr += nodesO[i].id + ",";
		}
		if (idListStr.length > 0 ) v = v.substring(0, v.length-1);
		var idObj = $("#ztreeids");
		idObj.attr("value", v);
		return idObj;
	};  
	

// 显示
	function showMenu() {
		var cityObj = $("#ztreesnames");
		var cityOffset = $("#ztreesnames").offset();
		$("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");

		$("body").bind("mousedown", onBodyDown1);
	}
	function showMenu2() {
		var cityObj = $("#pronames");
		var cityOffset = $("#pronames").offset();
		$("#menuContent2").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");

		$("body").bind("mousedown", onBodyDown2);
	}
//	function showMenu3() {
//		var cityObj = $("#citynames");
//		var cityOffset = $("#citynames").offset();
//		$("#menuContent3").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
//
//		$("body").bind("mousedown", onBodyDown3);
//	}
	   
// 隐藏
	function onBodyDown1(event) {
		if (!(event.target.id == "menuBtn" || event.target.id == "ztreesnames" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
			hideMenu1();
		}
	}
	
	function onBodyDown2(event) {
		if (!(event.target.id == "menuBtn" || event.target.id == "pronames" || event.target.id == "menuContent2" || $(event.target).parents("#menuContent2").length>0)) {
			hideMenu2();
		}
	}
	
//	function onBodyDown3(event) {
//		if (!(event.target.id == "menuBtn" || event.target.id == "citynames" || event.target.id == "menuContent3" || $(event.target).parents("#menuContent3").length>0)) {
//			hideMenu3();
//		}
//	}	
//	
	function hideMenu1() {
		$("#menuContent").fadeOut("fast");
		$("body").unbind("mousedown", onBodyDown1);
	}
	
	function hideMenu2() {
		$("#menuContent2").fadeOut("fast");
		$("body").unbind("mousedown", onBodyDown2);
	}

//	function hideMenu3() {
//		$("#menuContent3").fadeOut("fast");
//		$("body").unbind("mousedown", onBodyDown3);
//	}

	
   //treeId是treeDemo  
   function filter(treeId, parentNode, childNodes) {    
       if (!childNodes) return null;    
       for (var i=0, l=childNodes.length; i<l; i++) {    
           childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');    
       }    
       return childNodes;    
   }  
   
    
   //异步加载错误的fun
   function zTreeOnAsyncError(event, treeId, treeNode){    
       alert("异步加载失败!");    
   } 
   
   //异步加载成功的fun 
   function zTreeOnAsyncSuccess(event, treeId, treeNode, msg){
   	if(treeNode==null){
           var zTree = $.fn.zTree.getZTreeObj("treeDemo");
           nodes = zTree.getNodes();
           for (var i=0, l=nodes.length; i<l; i++) {
               zTree.expandNode(nodes[i], true, false, false);
           }
           asyncNodes(zTree.getNodes());
            if (!goAsync) {
               curStatus = "";
            }
       }
         
   };
   function asyncNodes(nodes) {
       if (!nodes) return;
       curStatus = "async";
       var zTree = $.fn.zTree.getZTreeObj("treeDemo");
       for (var i=0, l=nodes.length; i<l; i++) {
           if (nodes[i].isParent && nodes[i].zAsync) {
               asyncNodes(nodes[i].children);
           } else {
               goAsync = true;
               zTree.reAsyncChildNodes(nodes[i], "refresh", true);
                   }
               }
           }
             

猜你喜欢

转载自blog.csdn.net/qq_27815133/article/details/81091841