zTree插件之多选下拉菜单实例代码


Posted in Javascript onNovember 06, 2013

zTree插件之多选下拉菜单实例代码
css和js

<!--ztree树结构-->
<link rel="stylesheet" type="text/css" href="assets/ztree/css/zTreeStyle.css">
<link rel="stylesheet" type="text/css" href="assets/ztree/css/zTreeIcons.css">
<script src="assets/js/jquery.js"></script>
<!--ztree树-->
<script src="assets/ztree/js/jquery.ztree-2.6.js"></script>

html
<div class="input-append">
    <input class="input-medium" id="citySel" readonly type="text" value="">
    <a id="menuBtn" class="btn" type="button"><i class="icon-search"></i></a>
</div>
<div id="DropdownMenuBackground" style="display:none; position:absolute;z-index:999;height:250px; min-width:163px; background-color:white;border:1px solid;">
    <div style="height:220px; min-width:163px; background-color:white;border:1px solid;border-bottom:0px;overflow-y:auto;overflow-x:auto;">
        <ul id="dropdownMenu" class="tree"></ul>    
    </div>
    <div style="height:26px;border:1px #D4D4D4 solid;box-shadow:0 -1px 10px rgba(0,0,0,0.1);background-color:#FAFAFA;background-image:-webkit-linear-gradient(top,#FFF,#F2F2F2);background-repeat: repeat-x;">
        <div align="center"><a href="javascript:void(0)" onclick="enter();hideMenu();" id="enter" class="btn btn-mini btn-inverse" style="margin-top:3px;">确定</a></div>
    </div>
</div>

自定义的js代码
<script type="text/javascript">
    var zTree1;
    var setting = {
        checkable:true,
        checkType : { "Y": "s", "N": "s" },
        isSimpleData: true,
        treeNodeKey: "id",
        treeNodeParentKey: "pId",
        fontCss: setFont,
        callback: {
            beforeClick: zTreeOnBeforeClick,
        }            
    };
    var zNodes = [
        {id:1, pId:0, name:"北京"},
        {id:2, pId:0, name:"天津"},
        {id:3, pId:0, name:"上海"},
        {id:6, pId:0, name:"重庆"},
        {id:4, pId:0, name:"河北省", open:false},
        {id:41, pId:4, name:"石家庄"},
        {id:42, pId:4, name:"保定"},
        {id:43, pId:4, name:"邯郸"},
        {id:44, pId:4, name:"承德"},
        {id:5, pId:0, name:"广东省", open:false},
        {id:51, pId:5, name:"广州"},
        {id:52, pId:5, name:"深圳"},
        {id:53, pId:5, name:"东莞"},
        {id:54, pId:5, name:"佛山"},
        {id:6, pId:0, name:"福建省", open:false},
        {id:61, pId:6, name:"福州"},
        {id:62, pId:6, name:"厦门"},
        {id:63, pId:6, name:"泉州"},
        {id:64, pId:6, name:"三明"}
    ];
    
    function setFont(treeId, treeNode) {
        if (treeNode && treeNode.isParent) {
            return {color: "blue"};
        } else {
            return null;
        }
    }
    function showMenu(){
        var cityObj = $("#citySel");
        var cityOffset = $("#citySel").offset();
        $("#DropdownMenuBackground").css({left:cityOffset.left+"px",top:cityOffset.top+cityObj.outerHeight()+"px"}).slideDown("fast");    
    }    
    function reloadTree(){
        hideMenu();
        zTree1 = $("#dropdownMenu").zTree(setting, zNodes);
    }
    function hideMenu() {
        $("#DropdownMenuBackground").slideUp("fast");
    }
    function zTreeOnBeforeClick(treeId, treeNode) {
        return false;
    }
    function enter(){
        var str = "";
        var nodes = zTree1.getCheckedNodes();
        var i = 0;
        do{
            str = str+nodes[i].name+",";
            if(nodes[i].isParent&&nodes[i].checked){
                i = i+nodes[i].nodes.length;
            }
            else{
                i++;
            }
        }while(i<nodes.length)
        str = str.slice(0,-1);
        $("#citySel").val(str);
    }
    $(document).ready(function(e) {
        reloadTree();
        $("#menuBtn").bind("click",
            function(){
                if($("#DropdownMenuBackground").css("display") == "none"){
                    showMenu();
                }
                else{
                    hideMenu();
                }
            }
        );
        $("body").bind("mousedown", 
            function(event){
                if (!(event.target.id == "DropdownMenuBackground" || $(event.target).parents("#DropdownMenuBackground").length>0)) {
                    hideMenu();
                }
            });
    });
</script>
Javascript 相关文章推荐
js 图片缩放(按比例)控制代码
May 27 Javascript
jQuery中的常用事件总结
Dec 27 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
Jan 27 Javascript
javascript中字符串拼接详解
Sep 26 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
详解js的六大数据类型
Dec 27 Javascript
Javascript 严格模式use strict详解
Sep 16 Javascript
详解webpack + react + react-router 如何实现懒加载
Nov 20 Javascript
详解微信小程序中var、let、const用法与区别
Jan 11 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
JS性能优化实现方法及优点进行
Aug 30 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 #Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 #Javascript
浅析Js中的单引号与双引号问题
Nov 06 #Javascript
表单元素与非表单元素刷新区别详细解析
Nov 06 #Javascript
js onclick事件传参讲解
Nov 06 #Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 #Javascript
css样式标签和js语法属性区别
Nov 06 #Javascript
You might like
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
react-native fetch的具体使用方法
2017/11/01 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
Python程序设计入门(3)数组的使用
2014/06/16 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
学习Python列表的基础知识汇总
2020/03/10 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书