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与vbscript数据共享
Jan 09 Javascript
javascript 全角转换实现代码
Jul 17 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
Dec 09 Javascript
JS正则中的RegExp对象对象
Nov 07 Javascript
js解决弹窗问题实现班级跳转DIV示例
Jan 06 Javascript
javascript无刷新评论实现方法
May 13 Javascript
jQuery超酷平面式时钟效果代码分享
Mar 30 Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
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防止form重复提交的方法
2013/07/01 PHP
php生成静态页面的简单示例
2014/04/17 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
JS常用算法实现代码
2016/11/14 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
医生进修自我鉴定
2014/01/19 职场文书
会计岗位职责范本
2014/03/07 职场文书
七匹狼男装广告词
2014/03/21 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
十岁生日答谢词
2015/01/05 职场文书
离婚协议书样本
2015/01/26 职场文书
运动会广播稿300字
2015/08/19 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
Python实现8种常用抽样方法
2021/06/27 Python