zTree 点击input框,下方出现树形信息

点击input框,出现树形信息代码:

1、将需要使用的 zTree 相关的 js、css、img 文件分别放置到相应目录,并且保证相对路径正确,相关文件可去官网下载:https://treejs.cn/v3/main.php#_zTreeInfo

我这里之引入了两个主要文件
在这里插入图片描述
在这里插入图片描述

页面:

 <div class="form-group">
    <label class="col-sm-2 control-label" id="orgLabel">原属机构</label>
    <div class="col-sm-4 text-left">
      <input type="text" id="organization" name="organization" class="form-control" onclick="showMenu(); return false;"  autocomplete="off"  readonly="readonly" aria-label="...">
    </div>
    <div id="menuContent"  style="position: absolute; display: none;width:520px;height:auto; z-index: 10; background-color: #eee; overflow: auto">
    <ul id="treeDemo" class="ztree"></ul>
    <!-- // class必须为ztree-->                                           
   </div>
</div>;

js:

    var setting = {
        view: {
            showIcon: false,//设置 zTree 是否显示节点的图标。默认值:true
            showLine: false//设置 zTree 是否显示节点之间的连线。默认值:true
        },
        data: {
           simpleData: {
             enable: true,//确定 zTree 初始化时的节点数据、异步加载时的节点数据、或 addNodes 方法中输入的 newNodes 数据是否采用简单数据模式 (Array)

             idKey: "id",//你后台返回的json的id字段(节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效])
             pIdKey: "pId",//你后台返回的json的父级id字段(节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效])
             rootPId: 0//(用于修正根节点父节点数据,即 pIdKey 指定的属性值。[setting.data.simpleData.enable = true 时生效])
         }
       },
       callback: {
           onClick: onClick//用于捕获节点被点击的事件回调函数
           //如果设置了 setting.callback.beforeClick 方法,且返回 false,将无法触发 onClick 事件回调函数。

       }
    };
     var filename;
     var parentids;
     var parentId;
     function onClick(e, treeId, treeNode) {
         $('#organization').val(treeNode.name);//当前节点name赋值input框
         console.log('id:'+treeNode.id);//当前选中节点id,可用于向后台传值
         filename = getFilePath(treeNode);//获取所有父节点的名字
         parentids = getFileId(treeNode);//获取所有父节点的id
         parentId = treeNode.id;//获取点击节点的id
         hideMenu();
     }
     //获取所有父节点名字
     function getFilePath(treeObj){
         if(treeObj==null)return "";
         var filename = treeObj.name;
         var pNode = treeObj.getParentNode();
         if(pNode!=null){
             filename = getFilePath(pNode) +">"+ filename;
         }
         return filename;
     }
     //获取所有父节点id
     function getFileId(treeObj){
         if(treeObj==null)return "";
         var id = treeObj.id;
         var pNode = treeObj.getParentNode();
         if(pNode!=null){
             id = getFileId(pNode) +">"+ id;
         }
         return id;
     }
     function showMenu() {//输入框的点击事件
         var labObj = $('#orgLabel');
         var labObjOffset = labObj.offset();
         $("#menuContent").css({ left: labObj[0].offsetWidth+labObjOffset.left+10 + "px" , top:  labObj[0].offsetTop+labObj.outerHeight()+10 + "px" }).slideDown("fast");//根据输入框的css格式设置offSet,否则会导致ztree与input不对称
         $("body").bind("mousedown", onBodyDown);
     }
   function hideMenu() {//初始化隐藏下拉树
       $("#menuContent").fadeOut("fast");
       $("body").unbind("mousedown", onBodyDown);
   }
   function onBodyDown(event) {//树的主体
       if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length > 0)) {
           hideMenu();
       }
   }
   $(document).ready(function() {
      var treeNodes = [
          {"id": 1, "pId": 0, "name": "test1"},
          {"id": 11, "pId": 1, "name": "test11"},
          {"id": 12, "pId": 1, "name": "test12"},
          {"id": 111, "pId": 11, "name": "test111"},
      ];
      $.fn.zTree.init($("#treeDemo"), setting, treeNodes);
     //此处treeNodes取值也可设置后台通过ajax传值,切记注意数据格式不正确引起的问题
    /*$.ajax({
    type:"post",
    url:'${ctx}/test/testInfo',
    async:true,
    success:function(res){
      var treeNodes =res.getOrgList;
      $.fn.zTree.init($("#treeDemo"), setting, treeNodes);
  });*/
 });
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要实现在点 input 标签时弹出下拉树形菜单,可以使用 layui 的 tree 组件结合 input 组件来实现。下面是一个简单的示例代码: HTML: ```html <div class="layui-input-inline"> <input type="text" id="treeInput" lay-verify="required" placeholder="点选择" autocomplete="off" class="layui-input"> </div> <div id="treeSelect" class="ztree" style="display: none;"></div> ``` JavaScript: ```javascript layui.use(['tree', 'form'], function() { var tree = layui.tree; var form = layui.form; // 模拟的下拉树形数据 var treeData = [ { name: "节点1", id: 1, children: [ { name: "节点1.1", id: 11 }, { name: "节点1.2", id: 12 } ] }, { name: "节点2", id: 2, children: [ { name: "节点2.1", id: 21 }, { name: "节点2.2", id: 22 } ] } ]; // 渲染树形菜单 tree.render({ elem: '#treeSelect', data: treeData, showLine: true, click: function(obj) { var node = obj.data; // 点树节点时将节点名称赋值给 input 标签 $('#treeInput').val(node.name); // 隐藏树形菜单 $('#treeSelect').hide(); } }); // 点 input 标签时显示树形菜单 $('#treeInput').on('click', function() { var inputOffset = $(this).offset(); $('#treeSelect').css({ left: inputOffset.left + 'px', top: (inputOffset.top + $(this).outerHeight()) + 'px' }).show(); }); // 点其他地方隐藏树形菜单 $(document).on('click', function(e) { if (!$(e.target).is('#treeInput') && !$(e.target).is('#treeSelect')) { $('#treeSelect').hide(); } }); }); ``` 在上面的代码中,我们使用 layui 的 tree 组件来渲染树形菜单,通过点树节点将节点名称赋值给 input 标签,并隐藏树形菜单。点 input 标签时,树形菜单会显示在 input 下方,点其他地方则会隐藏树形菜单。 请注意,这只是一个简单示例,您可能需要根据实际需求进行进一步的定制和调整。希望对您有帮助!如果您还有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值