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 相关文章推荐
JavaScript 继承详解(一)
Jul 13 Javascript
js遍历、动态的添加数据的小例子
Jun 22 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
js实现字符全排列算法的简单方法
May 01 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
vue使用Font Awesome的方法步骤
Feb 26 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
Nov 01 Javascript
js+canvas实现纸牌游戏
Mar 16 Javascript
three.js 制作动态二维码的示例代码
Jul 31 Javascript
npm ci命令的基本使用方法
Sep 20 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
python数字类型math库原理解析
2020/03/02 Python
利用python生成照片墙的示例代码
2020/04/09 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
优秀中学生事迹材料
2014/01/31 职场文书
岗位工作说明书
2014/07/29 职场文书
买房协议书范本
2014/10/23 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
浅谈MySQL user权限表
2021/06/18 MySQL
Java死锁的排查
2022/05/11 Java/Android
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python