在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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
JS获取父节点方法
Aug 20 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
jQuery循环遍历子节点并获取值的方法
Apr 14 Javascript
Bootstrap模仿起筷首页效果
May 09 Javascript
jQuery fadeOut 异步实例代码详解
Aug 18 Javascript
点击页面任何位置隐藏div的实现方法
Sep 05 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
Vue中正确使用jQuery的方法
Oct 30 jQuery
浅谈vue父子组件怎么传值
Jul 21 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
javascript中onclick(this)用法介绍
2013/04/19 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
在Python下尝试多线程编程
2015/04/28 Python
Python shutil模块用法实例分析
2019/10/02 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
银行贷款承诺书
2014/03/29 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
经理聘任证明
2015/03/02 职场文书
2015年班组长工作总结
2015/04/10 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书