Easyui和zTree两种方式分别实现树形下拉框


Posted in Javascript onAugust 04, 2017

最近工作中需要用到树形下拉框,因为项目中树形结构使用的是zTree,然后就百度,结果出来效果不好看,后来就试着用了easyui的comboTree,虽然比较好看,但是跟整体的bootstrap风格有点儿不搭。现在贴出来两种方式及效果,以后备用。

方式一,使用zTree

前端代码:

<div class="form-group"> 
  <label>点击事件:</label> 
  <input id="selectActionType" class="form-control" onfocus="showActionTypeTree()" onclick="showActionTypeTree()" readonly="readonly" style="border-radius:5px;background-color: white;cursor: default;"/> 
  <input type="hidden" name="actionTypeId" id="actionTypeId"/> 
  <div id="actionTreeContent" class="menuContent" style="border-radius:5px;display: none; z-index:9999;position: absolute; border: 1px #CCC solid; background-color:#f9f9f9;"> 
    <ul id="actionTypeTree" class="ztree" style="margin-top:0;height: 200px;overflow: auto"></ul> 
  </div> 
</div>

js代码:

/* 
   * 点击事件下拉树的设置 
   */ 
  var actionTypeSetting = { 
    view: { 
      dblClickExpand: true, 
      showIcon: false, 
      fontCss : {"font-weight":"400","font-size":"20px"} 
    }, 
    data: { 
      key: { 
        name: "text", 
        children: "children" 
      }, 
      simpleData: { 
        enable: true 
      } 
    }, 
    callback: { 
      onClick: actionTypeOnClick 
    } 
  }; 
  /* 
   * 点击事件下拉树的点击事件 
   */ 
  function actionTypeOnClick(e, treeId, treeNode) { 
    $("#actionTypeId").val(treeNode.id); 
    $("#selectActionType").val(treeNode.text); 
  } 
  /* 
   * 初始化点击事件类型 
   * 
   */ 
  function initActionType() { 
    $.ajax({ 
      async: false, 
      cache: false, 
      type: 'POST', 
      dataType: "json", 
      url: localStorage.getItem("adminPath") + '/touch/typeTable/getActionList?businessTypeId=2', 
      error: function () {//请求失败处理函数 
        alert('请求失败'); 
      }, 
      success: function (data) { //请求成功后处理函数 
        $.fn.zTree.init($("#actionTypeTree"), actionTypeSetting, data); 
      } 
    }); 
  } 
  /* 
   * 展示点击事件SelectTree 
   */ 
  function showActionTypeTree() { 
    $.ajax({ 
      url: localStorage.getItem("adminPath") + '/touch/typeTable/getActionList?businessTypeId=2', 
      type: 'POST', 
      dataType: "json", 
      async: false, 
      success: function (data) { 
        $.fn.zTree.init($("#actionTypeTree"), actionTypeSetting, data); 
        var deptObj = $("#selectActionType"); 
        var deptOffset = $("#selectActionType").offset(); 
        $("#actionTreeContent").css({ 
          left: deptOffset.left - 26 + "px", 
          top: deptOffset.top + "px" 
        }).slideDown("fast"); 
        $('#actionTypeTree').css({width: deptObj.outerWidth() + "px"}); 
        var zTree = $.fn.zTree.getZTreeObj("actionTypeTree"); 
        var node = zTree.getNodeByParam("id", $('#actionTypeId').val(), null); 
        zTree.selectNode(node); 
        $("body").bind("mousedown", onBodyDownByActionType); 
      } 
    }); 
  } 
  /* 
   * Body鼠标按下事件回调函数 
   */ 
  function onBodyDownByActionType(event) { 
    if (event.target.id.indexOf('switch') == -1) { 
      hideActionTypeMenu(); 
    } 
  } 
  /* 
   * 隐藏点击事件Tree 
   */ 
  function hideActionTypeMenu() { 
    $("#actionTreeContent").fadeOut("fast"); 
    $("body").unbind("mousedown", onBodyDownByActionType); 
  }

方式二:使用easyui

前端代码:

<div class="form-group"> 
  <label>点击事件:</label> 
  <input id="actionTypeId2" name="actionTypeId2" class="form-control" /> 
</div>

js代码:

$("#actionTypeId2").combotree({
  url: localStorage.getItem("adminPath") + '/touch/typeTable/getActionList?businessTypeId=2',
  textField:'name',
  onClick: function (node) {
    $("#actionTypeId").val(node.id);
  },
  onSelect: function (node) {
    /**
     * 当选中该节点时展开该节点,同时关闭其他节点
     */
    if (node.state == "closed") {
      $(this).tree('expand', node.target);
    }
    else {
      var isLeaf = $(this).tree('isLeaf', node.target);
      if (!isLeaf) {
        $(this).tree("collapse", node.target);
      }
    }
  }
});

总结

以上所述是小编给大家介绍的Easyui和zTree两种方式分别实现树形下拉框,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery中交替点击事件的实现代码
Feb 14 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
jquery操作ID带有变量的节点实例
Dec 07 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 Javascript
angular中实现控制器之间传递参数的方式
Apr 24 Javascript
JavaScript运行原理分析
Feb 09 Javascript
Angular如何由模板生成DOM树的方法
Dec 23 Javascript
Vue路由管理器Vue-router的使用方法详解
Feb 05 Javascript
JavaScript内置对象之Array的使用小结
May 12 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 Javascript
JS中使用media实现响应式布局
Aug 04 #Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 #Javascript
node中Express 动态设置端口的方法
Aug 04 #Javascript
微信小程序 同步请求授权的详解
Aug 04 #Javascript
微信小程序 转发功能的实现
Aug 04 #Javascript
Vue计算属性的使用
Aug 04 #Javascript
JS+Ajax实现百度智能搜索框
Aug 04 #Javascript
You might like
PHP Mysql编程之高级技巧
2008/08/27 PHP
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
python 解析html之BeautifulSoup
2009/07/07 Python
python解析xml文件实例分享
2013/12/04 Python
进一步理解Python中的函数编程
2015/04/13 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
python APScheduler执行定时任务介绍
2022/04/19 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android
Python中的 No Module named ***问题及解决
2022/07/23 Python