天天看點

ztree 動态加載

<style>
 /**ztree **/
#menuContent ul.ztree {
	border: 1px solid #617775;
	background: #f0f6e4;
	width: 170px;
	height: 160px;
	overflow-y: scroll;
	overflow-x: auto;
}

#menuContent select {
	width: 154px;
	border: 1px solid #82AEE5;
	margin-bottom: 10px;
}
</style>
    <script type="text/javascript">
   		<!--
		var setting = {
	  
		check: {
					enable: true, 
					chkboxType: {  "Y" : "", "N" : "" }
				}, 
			view: {
			      // checkable: true,
				  dblClickExpand: false 
			},
			 async: { //動态加載
				enable: true,
				url:"/xh/dmbzyjwhb/treeload/dmyj", //加載ztree    
           
autoParam:["id","pId","name"], 
				dataFilter: filter
			},  
			 
			data: {   //必須添加
				simpleData: {
					enable: true
				}
			}, 
			
			callback: {
				beforeClick: beforeClick,//(點選之前)用于捕獲 勾選 或 取消勾選 之前的事件回調函數,并且根據傳回值确定是否允許 勾選 或 取消勾選 
			 //  onClick: onClick
			   onCheck: onCheck
			}
		};  
           
//  var zNodes = .... //靜态
         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;
		}
		function beforeClick(treeId, treeNode) {
			var check = (treeNode && !treeNode.isParent);//是節點,并且不是父級
			if (!check) alert("隻能選擇語境");
			return check;
		}
		
		function onClick(e, treeId, treeNode) {    //
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
		 	nodes = zTree.getSelectedNodes(),//擷取 zTree 目前被選中的節點資料集合(按Ctrl多選擇)
			v = "";
			va= "" ;
		  	nodes.sort(function compare(a,b){return a.id-b.id;});//按照id從小到大進行排序 
			for (var i=0, l=nodes.length; i<l; i++) {
			   if(i==0){
			     v += nodes[i].name  ;
			     va += nodes[i].id ; 
			   }else{
			    v += ","+nodes[i].name  ;
			   va += ","+nodes[i].id ; 
			   } 
			}
		//	if (v.length > 0 )  
		//	v = v.substring(0, v.length-1);
			var cityObj = $("#yjDm");
			cityObj.attr("value", va);//設定文本框的val 值
		 	$('#yj').attr("value",v) ; // 設定文本框的text值
		}

         function onCheck(e, treeId, treeNode) {
			var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
			nodes = zTree.getCheckedNodes(true),
			v = "";
			va= "" ;
			for (var i=0, l=nodes.length; i<l; i++) { 
				//v += nodes[i].name + ",";
				 if(i==0){
				     v += nodes[i].name  ;
				     va += nodes[i].id ; 
				   }else{
				    v += ","+nodes[i].name  ;
				   va += ","+nodes[i].id ; 
				   } 
			}
		//   if (v.length > 0 ) v = v.substring(0, v.length-1);
			var cityObj = $("#yjDm");
			cityObj.attr("value", va);
		 	$('#yj').attr("value",v) ;
		}
    
		function showMenu() {
			var cityObj = $("#yj");//輸入框
			var cityOffset = $("#yj").offset();//擷取比對元素在目前視口的相對偏移
			//cityOffset.left 元素在目前視口的相對偏移
			//slideDown 通過高度變化(向下增大)來動态地顯示所有比對的元素,在顯示完成後可選地觸發一個回調函數。
			$("#menuContent").css({left:165 + "px", top:  125+ "px"}).slideDown("fast");
            
			$("body").bind("mousedown", onBodyDown);//給body綁定滑鼠按下事件
		}
		function hideMenu() {
			$("#menuContent").fadeOut("fast");
			$("body").unbind("mousedown", onBodyDown);
		}
		//event 代表事件的狀态,比如事件在其中發生的元素、鍵盤按鍵的狀态、滑鼠的位置、滑鼠按鈕的狀态。
		//event.target 直接接受事件的目标DOM元素
		function onBodyDown(event) {
		    //如果接受事件的目标DOM元素的id 不是menuBtn(選擇) 或 不是menuContent(菜單内容) 或  menuContent對象中元素的個數不大于0
			//點選不是選擇按鈕,不是菜單内容的時候就隐藏下拉目錄
			if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
				hideMenu();
			}
		}

		$(document).ready(function(){
			$.fn.zTree.init($("#treeDemo"), setting); // 靜态,zNodes
		});
		//-->
	</SCRIPT> 
           

<!--調用-->

  <input type = "hidden" name = "yjDm" id = "yjDm"  value="${bzBsm.yjDm}" /> 

    <form:input id = "yj"  path="yj"  cssClass ="required"   readonly ="true" style="width:310px;"/> 

       <a id="menuBtn" href="#" target="_blank" rel="external nofollow" onClick="showMenu(); return false;">選擇</a>

<div id="menuContent"   style="display:none; position: absolute; width: 310px;">

  <ul id="treeDemo" class="ztree" style="margin-top:0; width:310px;height:150px;"></ul>

 </div>

引入js

<link rel="stylesheet"    href="<c:url value='/scripts/zTree-3.5/css/zTreeStyle/zTreeStyle.css'/>" target="_blank" rel="external nofollow" type="text/css">

  <link rel="stylesheet" href="scripts/zTree-3.5/css/zTreeStyle/zTreeStyle.css" target="_blank" rel="external nofollow" type="text/css">

 <script type="text/javascript"  src="<c:url value='/scripts/zTree-3.5/js/jquery.ztree.core-3.5.js'/>"  ></script>

 <script type="text/javascript" src="scripts/zTree-3.5/js/jquery.ztree.all-3.5.js"></script> 

背景加載ztree

 List<Map> menuList =  dmBzYjwhbManager.yjZtree("2","2");     

super.ajaxOut(JSONArray.fromObject(menuList).toString(), response);