在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 相关文章推荐
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
Feb 07 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
Sep 29 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Aug 12 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
AngularJS基础知识笔记之过滤器
May 10 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
详解AngularJS的通信机制
Jun 18 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
JavaScript实战之带收放动画效果的导航菜单
Aug 16 Javascript
浅谈react.js中实现tab吸顶效果的问题
Sep 06 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 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中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
php-msf源码详解
2017/12/25 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Fabric 应用案例
2016/08/28 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python正则-re的用法详解
2019/07/28 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
学生出入校管理制度
2014/01/16 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
二审答辩状范文
2015/05/22 职场文书
军事理论课感想
2015/08/11 职场文书