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 相关文章推荐
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
jquery通过a标签删除table中的一行的代码
Dec 02 Javascript
Jquery 实现checkbox全选方法
Jan 28 Javascript
javascript中加var和不加var的区别 你真的懂吗
Jan 06 Javascript
JS+CSS3制作炫酷的弹窗效果
Nov 08 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
JavaScript实现瀑布流以及加载效果
Feb 11 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
JS重学系列之聊聊new操作符
Mar 04 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
angular4实现带搜索的下拉框
Mar 25 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遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
Python中random模块用法实例分析
2015/05/19 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python应用库大全总结
2018/05/30 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python telnet登陆功能实现代码
2020/04/16 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
结构工程研究生求职信
2013/10/13 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
集中整治工作方案
2014/05/01 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
抗洪救灾标语
2014/10/08 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android