<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);