一、效果图

【关闭】

  

【展开】    

     

二、代码

【HTML】注:布局一定要用DIV不是select否则效果····

  <div class="layui-form-item">

                 <label class="layui-form-label" style="float:left">部门</label>
<div class="layui-input-block">
@*<select name="PDEPT_KEY" lay-filter="PDEPT_KEY" id="PDEPT_KEY" lay-search="" lay-verType="tips">
<option value="" selected></option>
</select>*@
<div name="PDEPT_KEY" lay-filter="PDEPT_KEY" id="PDEPT_KEY" class="layui-form-select select-tree" lay-search=""></div> </div>
</div>

【js】

① 以下为固定方法

   function initSelectTree(id, isMultiple, chkboxType, zNodes) {
var setting = { data: {
simpleData: {
enable: true
}
},
check: {
enable: false,
chkStyle: "radio",
radioType: "all", },
chkboxType: { "Y": "ps", "N": "ps" },
callback: {
onClick: onClick,
onCheck: onCheck
} };
if (isMultiple) {
setting.check.enable = isMultiple;
}
if (chkboxType !== undefined && chkboxType != null) {
setting.check.chkboxType = chkboxType;
}
var html = '<div class = "layui-select-title" >' +
'<input id="' + id + 'Show"' + 'type = "text" placeholder = "请选择" value = "" class = "layui-input" readonly>' +
'<i class= "layui-edge" ></i>' +
'</div>';
$("#" + id).append(html); $("#" + id).append('<dl class="layui-anim layui-anim-upbit" ><div class="tree-content scrollbar">' +
'<input hidden id="' + id + 'Hide" ' +
'name="' + $(".select-tree").attr("id") + '">' +
'<ul id="' + id + 'Tree" class="ztree scrollbar" style="margin-top:0;"></ul>' +
'</div></dl>');
$("#" + id).bind("click", function () {
if ($(this).parent().find(".tree-content").css("display") !== "none") {
hideMenu()
} else {
$(this).addClass("layui-form-selected");
var Offset = $(this).offset();
var width = $(this).width() - 2 - 15;
$(this).parent().find(".tree-content").css({
left: Offset.left + "px",
top: Offset.top + $(this).height() + "px",
height: 250 + "px",
}).slideDown("fast");
$(this).parent().find(".tree-content").css({
width: width, });
$("body").bind("mousedown", onBodyDown);
}
});
$.fn.zTree.init($("#" + id + "Tree"), setting, zNodes);
hideMenu();
} //function beforeClick(treeId, treeNode) {
// var check = (treeNode && !treeNode.isParent);
// if (!check) alert("只能选择城市...");
// return check;
//} function onClick(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj(treeId);
if (zTree.setting.check.enable == true) {
zTree.checkNode(treeNode, !treeNode.checked, false)
assignment(treeId, zTree.getCheckedNodes());
} else {
assignment(treeId, zTree.getSelectedNodes());
hideMenu();
}
} function onCheck(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj(treeId);
assignment(treeId, zTree.getCheckedNodes());
} function hideMenu() {
$(".select-tree").removeClass("layui-form-selected");
$(".tree-content").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
} function assignment(treeId, nodes) {
var names = "";
var ids = "";
for (var i = 0, l = nodes.length; i < l; i++) {
names += nodes[i].name + ",";
ids += nodes[i].id + ",";
}
if (names.length > 0) {
names = names.substring(0, names.length - 1);
ids = ids.substring(0, ids.length - 1);
}
treeId = treeId.substring(0, treeId.length - 4);
$("#" + treeId + "Show").attr("value", names);
$("#" + treeId + "Show").attr("title", names);
$("#" + treeId + "Hide").attr("value", ids);
} function onBodyDown(event) {
if ($(event.target).parents(".tree-content").html() == null) {
hideMenu();
}
}

②以下为变动方法

 Ajax("/BindCombox/GetDeptData", false, "POST", {}, function (data) {
var jsondata = JSON.parse(data);
if (jsondata.IsError) {
layer.msg("" + jsondata.ErrMsg, { icon: 5 });
} else {
zNodes = jsondata.Data;//获取数据源 initSelectTree("PDEPT_KEY", true, { "Y": "ps", "N": "s" }, zNodes);
var treeObj = $.fn.zTree.getZTreeObj("PDEPT_KEYTree");
var node = treeObj.getNodes();
treeObj.selectNode(node[0]);
treeObj.checkNode(node[0], true, true, true);
}
});

  ③数据源格式

 [
{"id":41.0,"name":"技术二部","pId":1.0,"open":true},
{"id":42.0,"name":"技术三部","pId":null,"open":true}
]

注:设置open为true,树状菜单为展开状态

三、未实现效果问题解析

  ①没有引用js。ztree和layui

  ②布局采用select,没有使用div

  ③网络请求数据源不正确。

注:此方法仍存在不足之处,望有能人指点

layui+ztree 树状下拉框的更多相关文章

  1. 手把手教学~基于element封装tree树状下拉框

    在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...

  2. 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件

    jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...

  3. ComboTree( 树型下拉框) 组件

    本节课重点了解EasyUI中Tree(树)组件的使用方法, 这个组件依赖于Combo(下拉框)和 Tree(树)组件.一. 加载方式//class 加载方式<select id="cc ...

  4. 组件 layui 常用控件下拉框的应用

    下拉框的显示样式: 针对下拉框的绑定等操作时,在最后务必调用一次 form.render(); 1.基本定义: <div class="layui-form-item"> ...

  5. Layui:设置select下拉框自动选中某项

    1.问题:layUI,在做编辑功能有下拉框数据时,需要初始化选中某个值,layUI官网没有相关api,可能我比较笨没找到 2.解决思路:出发点击事件 3.分析dom树结构,出发dl点击事件 方法: v ...

  6. LayUI中实现上级下拉框动态加载下级下拉框js

    js代码: var form = layui.form, layer = layui.layer; form.on("select(上级)", function(data){ va ...

  7. 【Layui】Layui模板引擎生成下拉框不显示

    首先让我震惊了一下,layui引擎模板居然是支持ajax操作的 博主的需求是需要在数据表格内放入下拉框而下拉框的数据是数据库内查出来的(详见上一篇博客),但是下拉框怎么也显示不出来 找了四个小时的问题 ...

  8. IE9+的树状下拉菜单,支持多选

    //JS核心代码function treeBox(Config){var el=eval(Config.el);var w=Config.width;var h=Config.height;var d ...

  9. 【Layui】当Layui数据表格和Layui下拉框组合时发生的问题

    关于Layui数据表格用下拉框显示问题 如图所示 可以看见当点击下拉框时下拉选项被下拉框覆盖 此时你需要在数据表格渲染完成时的回调内添加如下代码即可 $(".sel_scrq"). ...

随机推荐

  1. 用Docker解决坑爹的环境搭建系列——ubuntu16.04 SSH

    sudo docker run --name java -d -p 19992:22 -p 9992:8080 hub.c.163.com/public/ubuntu:16.04-tools # 可以 ...

  2. Protocol Buffers(3):阅读一个二进制文件

    目录 Proto文件 序列化 二进制文件解析 反序列化 参考 博客:blog.shinelee.me | 博客园 | CSDN 这篇文章中,我们将定义一个相对复杂的数据结构,直接分析其序列化后的二进制 ...

  3. 学习JVM是如何从入门到放弃的?

    前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记.现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书. 学习JVM的目的也很简单: 能够知道JVM是什么,为我们干 ...

  4. C#简单继承示例详解——快速入门

    在面向对象当中继承是非常重要的,也是面向对象的三大特性之一(继承.封装.多态),今天我们来揭开他的神秘面纱. 话不多说,我们上菜. using System; using System.Collect ...

  5. 为什么HTTPS比HTTP更安全?

    摘要: 理解HTTPS. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代 ...

  6. HTML 练习on方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 【原】无脑操作:Windows下搭建Kafka运行环境

    Kafka是一种高吞吐量的分布式发布订阅消息系统 1.优点:① 通过磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能.② 高吞吐量:即使是非常普通的硬件Kaf ...

  8. Use Wait & Notify to Implement Two Threads Run Alternatively

    public class ThreadCommunication { public static void main(String[] args) { Business business = new ...

  9. 双因素认证(2FA)教程

    所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤. 密码是最常见的认证方法,但是不安全,容易泄露和冒充. 越来越多的地方,要求启用 双因素认证(Two-factor ...

  10. 微擎where范围查询in

    where sale_time in($todayStart,$todayEnd)