select+ztree自定義下拉框整合ztree
效果圖:
一、需要引入檔案有:jquery.js、zTree/2.6/zTreeStyle.css、zTree/2.6/jquery.ztree-2.6.min.js
注意引入先後順序要先引入jquery.js;
二、html程式碼:
<input type="text" name="department_name" id="department_name" value="${pd.department_name}" maxlength="100" placeholder="點選選擇組織機構" title="組織機構" style="width:98%;" readonly="readonly" onclick="initTree()"/> <input type="hidden" name="department_id" id="department_id" value="${pd.department_id}" /> <div id="departmentTreeDiv" style="display:none;background-color: white;position:absolute;z-index:9999;border: 1px solid #DDDDDD"> <ul id="departmentTree" class="tree"></ul> </div> <script type="text/javascript"> var treeDataList=${departmentList}; function initTree(){ //傳入所需要的id屬性名 treeDiv("departmentTree","departmentTreeDiv","department_name","department_id",); } </script> 解釋:第一個input用於存放ztree選中後節點的名稱name;第二個input用於存放ztree選中節點後對應的id值;div用於承載整個樹形結構;
三、treeDiv.js工具(ztree的操作):
//自定義下拉框整合ztree //機構樹 /*傳入引數tree:用於承接ztree的ul的id;treeDivId:用於承接ztree的div的id;inputId:接受顯示選中文字的input的id; inputHideId:接受選中文字對應的id的input的id(一個hidden的input);treeDataList:形成樹形需要的資料陣列; */ var zTree; var treeId; function treeDiv(tree,treeDivId,inputId,inputHideId,treeDataList){ treeId=tree; var departmentList=treeDataList; var setting = { showLine: true, checkable: false, callback:{ beforeClick:zTreeBeforeClick } }; zTree = $("#"+tree+"").zTree(setting, departmentList); function zTreeBeforeClick(treeId, treeNode){ $("#"+treeDivId+"").css("display","none"); $("#"+inputId+"").val(treeNode.name); $("#"+inputHideId+"").val(treeNode.id); } ck(treeDivId,inputId); } function ck(treeDivId,inputId){ //控制departmentTreeDiv承接樹形結構的div的隱藏 var obj=$("#"+treeDivId+""); var oBtn=$("#"+inputId+""); document.onclick=function(event){ var e=event || window.event;//相容ie和非ie的event var aim=e.srcElement || e.target; //相容ie和非ie的事件源 if(e.srcElement){ var aim=e.srcElement; aimFun(aim,oBtn,obj); }else{ var aim=e.target; aimFun(aim,oBtn,obj); } } } function aimFun(aim,oBtn,obj){ var f=true; if(aim==oBtn[0]){ obj.toggle(); } if(aim.toString()=="[object HTMLButtonElement]"){ var btn=obj.find("button"); f=setTval(aim,btn); } if(aim.toString()=="[object HTMLLIElement]"){ var li=obj.find("li"); f=setTval(aim,li); } if(aim.toString()=="[object HTMLUListElement]"){ var ul=obj.find("ul"); f=setTval(aim,ul); } if(aim!=oBtn[0] && aim!=obj[0] && f){ obj.css("display","none"); } //當多個樹形結構時,點選其中一個input暫時樹形時,隱藏其他的樹形結構div var ulArr=$(".tree"); for(var i=0; i<ulArr.length;i++){ if(treeId!=$(ulArr[i]).attr("id")){ $(ulArr[i]).parent().css("display","none"); } } } function setTval(aim,arr){ var f=true; if(arr !=null &&arr!=undefined && arr.length>0){ for(var i=0;i<arr.length;i++){ if(aim==arr[i]){ f=false; return; } } } return f; }
四、後臺方法:
1、controller:
import net.sf.json.JSONArray;
@RequestMapping(value="/goAdd")
public ModelAndView goAdd()throws Exception{
ModelAndView mv = this.getModelAndView();
//樹資料
List<Map<String,Object>> depList=service.findTreeList("0");
JSONArray departmentList= JSONArray.fromObject(depList);
mv.addObject("departmentList",departmentList);
mv.setViewName("jsp頁面");
return mv;
}
2、impl:
/**
* 獲取tree資料,遞迴實現
* @param parentId
* @return
* @throws Exception
*/
@Override
public List<Map<String, Object>> findTreeList(String parentId) throws Exception {
List<Map<String,Object>> list=(List<Map<String,Object>>)
session.findForList("mapper.findTreeList"parentId);
for( Map<String, Object> map : list) {
map.put("nodes",findTreeList(map.get("id").toString()));
}
return list;
}
3、mapper.xml:
<!-- 通過pId查詢客戶組織機構 ,首次pId="0"-->
<select id="findClientDepartmentList" parameterType="String" resultType="pd">
select o.department_id "id",o.name "name",o.parent_id "pId" from department o where o.parent_id= # {parentId}
</select>
五、前臺接收的資料結構如下供參考:
[{"nodes":[{"nodes":[{"nodes":[],"name":"客服B組","pId":"cbbc84eddde947ba8af7d509e430eb70","id":"83a25761c618457cae2fa1211bd8696d"},
{"nodes":[{"nodes":[],"name":"1隊","pId":"8f8b045470f342fdbc4c312ab881d62b","id":"a0982dea52554225ab682cd4b421de47"}],"name":"客服A組","pId":"cbbc84eddde947ba8af7d509e430eb70","id":"8f8b045470f342fdbc4c312ab881d62b"}],"name":"客服部","pId":"5cccdb7c432449d8b853c52880058140","id":"cbbc84eddde947ba8af7d509e430eb70"}],
"name":"C公司","pId":"0","id":"5cccdb7c432449d8b853c52880058140"},{"nodes":[{"nodes":[{"nodes":[],"name":"客戶關懷","pId":"d41af567914a409893d011aa53eda797","id":"0956d8c279274fca92f4091f2a69a9ad"},
{"nodes":[],"name":"客戶解惑","pId":"d41af567914a409893d011aa53eda797","id":"3e7227e11dc14b4d9e863dd1a1fcedf6"}],"name":"客戶部","pId":"a6c6695217ba4a4dbfe9f7e9d2c06730","id":"d41af567914a409893d011aa53eda797"}],"name":"D公司","pId":"0","id":"a6c6695217ba4a4dbfe9f7e9d2c06730"}]);
六、本工具沒有控制自適應承載ztree的div的寬度,請自行更具需要設定寬度,預設寬度為展開的樹形的寬度,需要其他方法,可在treeDiv.js裡面進行擴充套件,望能夠幫助有需要的人,不對之處請多多指正,謝謝!
相關推薦
select+ztree自定義下拉框整合ztree
效果圖: 一、需要引入檔案有:jquery.js、zTree/2.6/zTreeStyle.css、zTree/2.6/jquery.ztree-2.6.min.js 注意引入先後順序要先引入jquery.js; 二、html程式碼: <input
【4】自定義下拉框
order viewport down jquer pos bottom last png 下拉框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8
自定義下拉框樣式,利用prototype制作
制作 pointer code javascrip .text att .com 自定義 cti <script type="text/javascript" src="js/jquery-1.7.2.min.js" ></script>
移動端自定義下拉框【H5+js+css】
var weekdayArr = ['男', '女'];// var age1 = ['18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '3
SELECT2自定義下拉框
SELECT2自定義下拉框 安裝 參考:Getting Started | Select2 - The jQuery replacement for select boxes 快速使用 html: <select class="js-ex
安卓自定義下拉框---Spinner的實現
最近專案中用到下拉列表,剛開始一頭霧水,後來在網上找了一個Demo,自己修改了一下,現在把它分享出來,給大家參考,寫的不好,多多關照!不過功能還是實現的了······先上圖給大家看看效果! 效果圖: 實現思路: 1.定義下拉控制元件佈局(ListView及子控
JS外掛——自定義下拉框
HTML的原生select標籤,很多東西改不了,限制太大,不同的瀏覽器顯示的樣式還不一樣,尤其是當需要相容IE7、IE8時問題更多,想做一個美觀的下拉框,最終還是得自定義來實現。 效果圖: 這裡沒有做過多的美化,需求就是要這麼個簡潔的。當
vue自定義下拉框元件
<template> <div class="selection-component"> <div class="selection-show" @click="toggleDrop"> <span :class="{'active': isDr
jqGrid之自定義下拉框
目的:使用者表中的負責人,做成下拉框模式,下拉框的選項為負責人中的資料。 1.首先js獲取負責人資料(陣列格式) var g_ary=[]; var g_fpid=null; $(
android中自定義下拉框
android自帶的下拉框好用不?我覺得有時候好用,有時候難有,專案規定這樣的效果,自帶的控制元件實現不了,那麼只有我們自己來老老實實滴寫一個新的了,其實最基本的下拉框就像一些資料填寫時,點選的時候出現在編輯框的下面,然後又很多選項的下拉框,可是我在網上找了一下,沒有這種下
原生js實現一個自定義下拉單選選擇框
瀏覽器自帶的原生下拉框不太美觀,而且各個瀏覽器表現也不一致,UI一般給的下拉框也是和原生的下拉框差別比較大的,這就需要自己寫一個基本功能的下拉選單/下拉選擇框了。最近,把專案中用到的下拉框元件重新封裝了一下,以建構函式的方式進行封裝,主要方法和事件定義在原型上,下面是主要的實現程式碼並添加了比較詳細的註釋
jqGrid 單元格編輯 自定義下拉選擇框 動態資料來源 通用實現
jqGrid編輯型別可分為:單元格編輯(Cell editing)、行內編輯(Inline editing)和表單編輯(Form editing),本文討論單元格編輯模式下,下拉選擇框的通用實現。jqGrid自帶下拉選擇框編輯型別,只要設定edittype='select’並設定editop
wxpython自定義下拉列表框
自定義wxpython下拉列表框,支援修改邊框顏色,按鈕圖示的動態變換 原理同前兩片文章一樣,使用了兩個wx.staticText做邊框,一個文字框來顯示下拉列表的資料,和一個圖片按鈕,實現下拉的標誌,和一個自帶的列表框, 影藏該列表框,不要原來的樣式,這裡只需要使用它的展示列表的資料功能
自定義下拉列表select樣式
jq: $(".select-head").each(function(){ $(this).click(function(event) {//自定義下拉列表框顯示和隱藏console.log(0);$(this).siblings("ul.option").toggleC
select自定義下拉箭頭
現場還原 在HTML5開發APP應用的過程中,有些表單頁面需要用到select標籤,開發的時候用的安卓手機測試,樣式的顯示非常完美,但一用蘋果手機測試,select的下拉箭頭就不會顯示。 <!DOCTYPE html> <html la
Android PullToRrefresh 自定義下拉刷新動畫 (listview、scrollview等)
appear ram nal ima cas 創建 protect tom inter PullToRefreshScrollView 自定義下拉刷新動畫,只需改一處。 以下部分轉載自http://blog.csdn.net/superjunjin/article/
使用 CSS overscroll-behavior 控制滾動行為:自定義下拉刷新和溢出效果
pull str 新的 title contain 下拉刷新 介紹 select data CSS 的新屬性 overscroll-behavior 允許開發者覆蓋默認的瀏覽器滾動行為,一般用在滾動到頂部或者底部。 背景 滾動邊界和滾動鏈接(boundary & c
WPF 自定義下拉列表
LV mage png gif ces hid IT orm false XAML代碼: <Popup x:Name="popupStrategy" StaysOpen="False" PopupAnimation="Scroll" Width="190"
ABAP如何自定義下拉列表 .
app class AD 定義 fault pre amp 列表 nbsp 1. 在選擇屏幕上添加下拉列表控件, 代碼如下: PARAMETERS: auart LIKE vapma-auart AS LISTBOX VISIBLE LENGTH 6
jq自定義下拉菜單,當用戶點擊非自身元素(下拉菜單)本身時關閉下拉菜單
info alt one === 下拉 AS 菜單 com code jq自定義下拉菜單,當用戶點擊非自身元素(下拉菜單)本身時關閉下拉菜單 截圖: 代碼如下: //關閉用戶菜單 $(document).mousedown(function(e){