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

最近工作中需要用到树形下拉框,因为项目中树形结构使用的是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两种方式分别实现树形下拉框,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • jQuery中ztree 点击文本框弹出下拉框的实例代码

    废话不多说了,具体代码如下所示: <link rel="stylesheet" href="${ctx}/res/js/ztree/css/demo.css" type="text/css"/> <link rel="stylesheet" href="${ctx}/res/js/ztree/css/zTreeStyle/zTreeStyle.css" type="text/cs

  • jQuery使用EasyUi实现三级联动下拉框效果

    其它的都不说,使用easyui实现三级联动主要就是一层套一层,大家且看代码 html表单 <input id="txtPipeRowName" style="width:150px;"> <input id="txtPipeName" style="width:150px;"> easyUi的Combobox: // 一层Combo var srmCombx = $("#txtShouName

  • jQuery+easyui中的combobox实现下拉框特效

    1.第一种写法:Input框中显示: 复制代码 代码如下: <input id="cc" class="easyui-combobox" name="name" data-options="valueField:'value',textField:'text',data:[{'value':'1','text':'java'},{'value':'2','text':'C#'}]"/> 2. 第二种用法,在list

  • Jquery Easyui自定义下拉框组件使用详解(21)

    本文实例为大家分享了Jquery Easyui自定义下拉框组件的实现代码,供大家参考,具体内容如下 加载方式 JS调用加载 自定义下拉框不能通过标签的方式进行创建. <input id="box" /> <script> $(function () { //JS 加载调用 $('#box').combo({ required : true, multiple : true, }); }); </script> 属性列表 <script>

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

    最近工作中需要用到树形下拉框,因为项目中树形结构使用的是zTree,然后就百度,结果出来效果不好看,后来就试着用了easyui的comboTree,虽然比较好看,但是跟整体的bootstrap风格有点儿不搭.现在贴出来两种方式及效果,以后备用. 方式一,使用zTree 前端代码: <div class="form-group"> <label>点击事件:</label> <input id="selectActionType"

  • EasyUI创建对话框的两种方式

    对话框(Dialog)是一个特殊的窗口(window),可以包含在顶部的工具栏和在底部的按钮.默认情况下,对话框(Dialog)不能改变大小,但是用户可以设置 resizable 属性为 true,使其可以改变大小. 这种就是对话框了. EasyUI有两种创建方式: 第一种:通过已存在的DOM节点元素标签创建 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org

  • 利用Tkinter和matplotlib两种方式画饼状图的实例

    当我们学习python的时候,总会用到一些常用的模块,接下来我就详细讲解下利用两种不同的方式画饼状图. 首先利用[Tkinter]中的canvas画布来画饼状图: from tkinter import Tk, Canvas def DrawPie(): #创建窗口 windows=Tk() #添加标题 windows.title("画饼图") # 设置画布样式 canvas=Canvas(windows,height=500,width=500) # 将画布打包到窗口 canvas.

  • Angular弹出模态框的两种方式

    在开始我们的blog之前,我们要先安装ngx-bootstrap-modal npm install ngx-bootstrap-modal --save 不然我们的模态框效果会难看到你想吐 一.弹出方式一(此方法来自https://github.com/cipchk/ngx-bootstrap-modal) 1.alert弹框 (1)demo目录 --------app.component.ts --------app.component.html --------app.module.ts

  • Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)

    AngularJS提供了表单验证,但是验证的过程交互体验很不好,比如重设密码,重复密码的时候一键入就会提示密码不正确,现整理了两种方法,仅供借鉴. 一,点击提交验证 <form action="" class="form-horizontal col-md-9" name="reset_pwd" ng-submit="resetPwd()"> <div class="form-group"

  • ajax中data传参的两种方式分析

    本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data:

  • 深入SqlServer2008 数据库同步的两种方式(Sql JOB)的分析介绍

    下面介绍的就是数据库同步的两种方式: 1.SQL JOB的方式  sql Job的方式同步数据库就是通过SQL语句,将一个数据源中的数据同步到目标数据库中.特点是它可以灵活的通过SQL的方式进行数据库之间的同步操作.可以在制定的时间时间作为任务计划自动执行.缺点是需要写SQL来进行操作.既然是数据库之间的同步就涉及到数据库之间的连接.建立连接是同步的第一步.SQL Server建立连接可以通过系统存储过程建立[是否还有其他方式,我还不清楚].存储过程有以下几个:sp_droplinkedsrvl

  • SqlServer2008 数据库同步的两种方式(发布、订阅使用方法)

    上篇中说了通过SQL JOB的方式对数据库的同步,这一节作为上一节的延续介绍通过发布订阅的方式实现数据库之间的同步操作.发布订阅份为两个步骤:1.发布.2订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅.发布可以发布一张表的部分数据,也可以对整张表进行发布.下面分别介绍发布.订阅的过程. 1.发布.发布需要用实际的服务器名称,不能使用服务器的IP地址进行.能发布的信息包括[表].[存储过程].[用户函数]如果使用IP会有错误,如下图: 具体发布

  • jquery ajax提交表单数据的两种方式

    之前实现AJAX使用Javascript脚本一个一个敲出来的,很繁琐.学习Jquery之后就感觉实现AJAX并不是那么的困难了,当然除了Jquery框架外还有其它的优秀框架这里我就着重说下比较流行的Jquery.Jquery AJAX提交表单有两种方式,一是url参数提交数据,二是form提交(和平常一样在后台可以获取到Form表单的值).在所要提交的表单中,如果元素很多的话建议用第二种方式进行提交,当然你要是想练练"打字水平"的话用第一种方式提交也未尝不可,相信开发者都不想费白劲吧!

  • JavaScript为对象原型prototype添加属性的两种方式

    复制代码 代码如下: <script type="text/javascript"> <!-- /* 给原型 prototype 添加属性的两种方式 */ //方式一 var myObj = function(){ this.study = "JavaScript"; } myObj.prototype.hobby = function() { this.hobby = "See girl"; } var newObj = ne

随机推荐