输入框点击下滑Ztree菜单
记录一个功能实现代码,我这边前端用的是layui,需要实现的效果如下:
需求:当点击选择地区的时候会出现如上图的下拉菜单。
分析:首先肯定给这个输入框加监听,click方法,然后将ztree的div显示,这里的重点应该是怎么设计这个ztree使其能够显示在输入框的下面显示。这部分的代码也是在网上找到的。
实现步骤:
①:输入框和ztree的div代码
<div class="layui-input-inline">
<input type="text" name="busArea" id="busArea" lay-verify="required" placeholder="请选择地区" autocomplete="off" class="layui-input">
</div>
<div id="treeDiv" style="position: absolute; display: none; width: 190px; height: 300px; z-index: 9999; background-color: #F7F7F7; overflow: auto">
<ul id="mytree" class="ztree"></ul>
</div>
②:点击事件以及加载ztree的方法(数据是使用ajax从后端调的)
$().ready(function() {
var divTree = $("#treeDiv");
$("#busArea").click(function() {
var x = $(this).offset().left + 0;
var y = $(this).offset().top + 40;
divTree.css({
left : x + "px",
top : y + "px"
});
divTree.slideDown("slow");// 滑动方式显示元素
}); divTree.hover(function() { }, function() {
divTree.slideUp("slow");// 滑动方式隐藏元素
});
GetTree();
});
function GetTree() {
$.ajax({
type : "POST",
dataType : "json",
url : "xxxxxxxxxxxxxxxx",
async : false,
success : function(data) {
zTree = $.fn.zTree.init($("#mytree"), setting, data);
//展开所有节点
zTree.expandAll(zTree);
},
error : function(error) {
layer.msg('系统错误!', {
icon : 2,
time : 1500
})
}
});
}
ztree初始化配置代码就不贴了,和正常的写法一样。
update at 2018-12-24
此处有个小问题需要优化一下,这里设置的是鼠标离开下拉菜单再进行过隐藏,如果鼠标没进入下拉菜单的话就不会隐藏,这样的用户体验不好,解决方案如下:
1.我们可以给输入框加上onblur失去焦点事件监听(当然这里也可以加上鼠标离开输入框的事件mouseleave()看自己认为哪个更合适)
<input type="text" name="busArea" id="busArea" lay-verify="required" placeholder="请选择地区" autocomplete="off" class="layui-input" onblur="leaveText()">
2.设置全局变量 ifNeedClose 如果鼠标进入下拉选,就把这个变量赋值
var ifNeedClose; divTree.hover(function() {
// 鼠标在下拉菜单中,不需要关闭菜单
ifNeedClose = false;
}, function() {
// 鼠标离开下拉菜单,需要关闭
ifNeedClose = true;
divTree.slideUp("slow");// 滑动方式隐藏元素
});
3.在onblur方法中判断2中设置的变量,根据变量的值判断是否需要隐藏下拉菜单
functtion leaveText() {
// 如果不是不需要关闭,那就关闭菜单
if(ifNeedClose != false) {
divTree.slideUp("slow");
}
}
4.这样设置完毕,就可以解决这个问题了.
输入框点击下滑Ztree菜单的更多相关文章
- java Swing 如何添加点击可展开菜单控件( JMenuBar如何使用?)
准备: JMenuBar 点击可展开控件本体 JMenu 点击可展开控件中的一级菜单 JMenuItem 点击可展开控件中的二级菜单 JFrame 程序运行时弹出的那个框框 这是一个使用点击可展开菜 ...
- js点击出现二级菜单,点击二级菜单主菜单换成二级菜单
点击出现二级菜单 *{ margin:0px auto; padding:0px; } .yiji{ width:200px; height:40px; background-color:red; c ...
- jQuery - 制作点击显示二级菜单效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- fastclick使用与 fastclick ios11.3相关bug原因(ios输入框点击变得不灵敏,ios input失焦后,页面上移,点击不了)
FastClick 移动设备上的浏览器默认会在用户点击屏幕大约延迟300毫秒后才会触发点击事件,这是为了检查用户是否在做双击.为了能够立即响应用户的点击事件,就有了FastClick. 安装fastc ...
- PHP+Mysql+easyui点击左侧tree菜单对应表名右侧动态生成datagrid加载表单数据(二)
关于tree菜单生成,参考我的另一篇博文地址tree 菜单 实现功能:点击左侧tree菜单中的table,右侧通过datagrid加载出该表对用的所有数据 难点:获取该表的所有列名,动态生成datag ...
- 鼠标右键点击弹出菜单(jQuery)
禁用浏览器默认事件,此处是兼容写法 $(document).contextmenu(function (e) { var event = e || window.event; if (event.pr ...
- jquery实现input输入框点击加减数值随之变动
<input class="addBtn min" type="button" value="-" /><input cl ...
- element-ui 框架中使用 NavMenu 导航菜单组件时,点击一个子菜单会出现多个子菜单同时展开或折叠?
我在使用 elment-ui 框架的导航组件时,直接粘贴复制了官网上 (http://element-ui.cn/#/zh-CN/component/menu)的例子不会出错,但是当我将他们转化为动态 ...
- 常见input输入框 点击 发光白色外阴影 focus
先看看具体实现的效果 第一就是点击input 实现的效果 默认谷歌点击input是蓝色边框 去掉用outline:0; 实现效果用focus 默认状态的边框颜色一般较重 如border:1px s ...
随机推荐
- LightTable的结构(二)
这节主要研究下object的一个属性,behaviors 定义一个behavior需要提供name,trigger,reaction (behavior ::on-close-destroy :tri ...
- H264编码技术[3]
H.264的目标应用涵盖了目前大部分的视频服务,如有线电视远程监控.交互媒体.数字电视.视频会议.视频点播.流媒体服务等.H.264为解决不同应用中的网络传输的差异.定义了两层:视频编码层(VCL:V ...
- C#计算运行时间
using System.Diagnostics; private Stopwatch stw = new Stopwatch(); stw.Start(); stw.Stop(); MessageB ...
- HDU1851 A Simple Game
一个关于SG的博弈游戏,对于某个堆有$M_i$和$L_i$,那么这个堆的SG值为 $$SG_i = M_i \%(L_i+1)$$ 为什么这道题的$SG$函数就是这样子的呢?四个字:手算打表!! $L ...
- brew安装PHP7 swoole
环境: 系统:mac os High Sierra 10.13.3 php版本:7.0.27_19 1.安装homebrew brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在M ...
- hdoj--1379--DNA Sorting(排序水题)
DNA Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- Flask的闪现(message) 请求扩展 中间件 蓝图
补充:一个编程思路 需求:做一些邮件短信微信的消息通知,比如账单告警之类的:比如数据库操作,数据库种类繁多:缓存的选择比如redis/memcache,诸如此类需要进行选择配置,如果我们单纯的用函数去 ...
- SPOJ BEADS 最小字符串表示
SPOJ BEADS 给一个字符串(环) 问从哪个字符开始,字典序最小. 可以脑补到很多线性的解法,不过以下这个是最简单的,代码非常简单,就不解释了. #include<iostream> ...
- MSD6A628开发资料与技术支持
MSD6A628VX/VXM是mstar推出的低成本安卓智能网络电视方案,628分两个版本,一个是内置512MB内存,一个是外挂1G内存, 安卓4.4系统,4核A7处理器,Mali450MP2 GPU ...
- iOS核心动画以及UIView动画的介绍
我们看到很多App带有绚丽狂拽的特效,别出心裁的控件设计,很大程度上提高了用户体验,在增加了实用性的同时,也赋予了app无限的生命力.这些华丽的效果很多都是基于iOS的核心动画原理实现的,本文介绍一些 ...