在vue中根据光标的显示与消失实现下拉列表


Posted in Javascript onSeptember 29, 2019

重点知识

mousedown事件:mousedown的执行顺序大于blur事件

HTML代码

<template>
 <div>
  <input ref="search" @focus="showList(true)" v-model="search" @blur="showList(false)"/>
  <ul v-if="state">
   <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(1)">1</li>
   <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(2)">2</li>
   <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(3)">3</li>
   <li style="width: 100px;background: goldenrod;color: #fff" @mousedown="handleSearch(4)">4</li>
  </ul>
 </div>
</template>

通过上面的代码生成了我们的基本下拉列表,接下来是data数据的解析:

data() {
   return {
    search: '',//搜索框值
    state: false,//是否显示下拉列表
    isShowList: false,//判断是点击内容隐藏光标的,还是点击空白隐藏光标的
   }
  },

详细函数解析:

//显示光标和失去光标事件  
   showList(state) {//state用于判断是否是得到光标事件还是失去光标事件
    if (state) {
     this.state = state//显示下拉列表
    } else {
     if(this.isShowList){//this.isShowList用于判断是否是下拉列表里的内容点击的事件
      //把this.isShowList赋值为false让点击空白区能再次触发失去光标事件
      this.isShowList = false
      //让input一直都有光标事件
      this.$refs.search.focus()
     }else {
      this.state = state //隐藏下拉框
     }
    }
   },
   handleSearch(data) {//data搜索的数据
    this.search = data//赋值
    this.isShowList = true//这是区别是否是内容区的点击事件
   }

详细过程

  1. 点击input标签触发showList(true)方法,有它是true直接执行 this.state = state//显示下拉列表
  2. 点击下拉框内容触发handleSearch(data)方法 把 this.isShowList = true 标注这是在下拉框内容的点击事件,将不会隐藏下拉框
  3. 最后通过blur触发showList(false),他将根据this.isShowList判断是否隐藏下拉框,当this.isShowList是true时,执行this.isShowList = false 把this.isShowList回复原样,让点击空白区也能隐藏下拉框,
  4. this.$refs.search.focus()让input再次获得光标事件,这将为点击空白区能触发失去光标事件让下拉框隐藏起来

参考:https://3water.com/article/171151.htm

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 刷新页面的代码小结 推荐
Apr 02 Javascript
JS获取随机数函数可自定义最小值最大值
May 08 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
详解React Native网络请求fetch简单封装
Aug 10 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 Javascript
vue 数据操作相关总结
Dec 17 Vue.js
javascript实现简单留言板案例
Feb 09 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 #Javascript
微信小程序 行的删除和增加操作实现详解
Sep 29 #Javascript
微信小程序 轮播图实现原理及优化详解
Sep 29 #Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
Sep 29 #Javascript
React-redux实现小案例(todolist)的过程
Sep 29 #Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 #Javascript
在Layui中实现开关按钮的效果实例
Sep 29 #Javascript
You might like
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
js html实现计算器功能
2018/11/13 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python自动发送邮件脚本
2018/06/20 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
python 操作excel表格的方法
2020/12/05 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
python实现计算图形面积
2021/02/22 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
html5的localstorage详解
2017/05/09 HTML / CSS
小学老师寄语大全
2014/04/04 职场文书
学生干部培训方案
2014/06/12 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
2014年消防工作总结
2014/11/21 职场文书
小学课改工作总结
2015/08/13 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL