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 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
JavaScript静态类型检查工具FLOW简介
Jan 06 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
jquery datatable服务端分页
Aug 31 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
JS利用cookies设置每隔24小时弹出框
Apr 20 Javascript
详解webpack模块化管理和打包工具
Apr 21 Javascript
Vue实现移动端拖拽交换位置
Jul 29 Javascript
js作用域及作用域链工作引擎
Jul 07 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原理之变量(Variables inside PHP)
2013/08/09 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
详解python单元测试框架unittest
2018/07/02 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
shell程序中如何注释
2012/01/28 面试题
欢迎标语大全
2014/06/21 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
黄山导游词
2015/01/31 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python