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 相关文章推荐
javascript实现简单的贪吃蛇游戏
Mar 31 Javascript
js判断登陆用户名及密码是否为空的简单实例
May 16 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
Jun 11 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
javascript中的replace函数(带注释demo)
Jan 07 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 11 Javascript
详解vue-cli中使用rem,vue自适应
May 06 Javascript
深入了解JavaScript代码覆盖
Jun 13 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 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实现快速排序的三种方法分享
2014/03/12 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PHP学习笔记之session
2018/05/06 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
vue常用高阶函数及综合实例
2021/02/25 Vue.js
python解析xml模块封装代码
2014/02/07 Python
python根据出生日期获得年龄的方法
2015/03/31 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
查看Django和flask版本的方法
2018/05/14 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
python 写一个文件分发小程序
2020/12/05 Python
python Scrapy框架原理解析
2021/01/04 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
销售队伍口号
2014/06/11 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
信访工作汇报材料
2014/10/27 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
个性与发展自我评价
2015/03/06 职场文书