vue 表单输入框不支持focus及blur事件的解决方案


Posted in Vue.js onNovember 17, 2020

采用指令的方式来解决这个问题(此处的前端框架以mint-ui为例):

1.html引用: v-mtfocus

vue 表单输入框不支持focus及blur事件的解决方案

2.在实例中添加指令

directives: {
  'mtfocus' (el, binding, vnode) {
   let mtinput = el.querySelector('input')
   mtinput.onfocus = function () {
    ...//如果要对节点的数据进行更改,且更改要映射到页面上,则更改可在vnode.context上进行,这样,改完之后,改变就会映射到页面
   }
   mtinput.onblur = function () {
    ...//同上理
   }
  } 
 }

补充知识:vue中实现点击按钮使input显示的同时获取焦点

需求说明:点击搜索按钮出现input框,并自动使input框聚焦。

如图所示:

vue 表单输入框不支持focus及blur事件的解决方案

实现方式1:利用vue的ref

html代码如下:

<input ref="inputVal" class="searchInp" type="text" v-model="searchVal" placeholder="搜索标题或内容..." />
<div v-show="searchBtnFlag" class="searchBtn" @click="searchIn">
 <i class="iconfont icon-search1187938easyiconnet"></i> 搜索
</div>

Js代码如下:

searchIn(){
 this.searchBtnFlag = !this.searchBtnFlag;
 this.$nextTick(function () {
  //DOM 更新了
  this.$refs.inputVal.focus()
 })
},

重点:只需要把需要的操作放在$nextTick内即可。

实现方式2:利用js(原理其实等同于方式1)

<input id="inputVal" class="searchInp" type="text" v-model="searchVal" placeholder="搜索标题或内容..." />
<div v-show="searchBtnFlag" class="searchBtn" @click="searchIn">
 <i class="iconfont icon-search1187938easyiconnet"></i> 搜索
</div>

Js代码如下:

searchIn(){
 this.searchBtnFlag = !this.searchBtnFlag;
 this.$nextTick(function () {
 document.getElementById("inputVal").focus();
 })
},

说明:必须在$nextTick内使用方法是因为:dom更新的先后顺序的问题,不是所有的数据改变一定会触发dom的更新,而在修改数据之后立即使用这个方法,可以获取更新后的 dom。

误区:直接使用autofocus

html:

<input v-bind:autofocus="!searchBtnFlag" class="searchInp" type="text" v-model="searchVal" placeholder="搜索标题或内容..." />
<div v-show="searchBtnFlag" class="searchBtn" @click="searchIn">
  <i class="iconfont icon-search1187938easyiconnet"></i> 搜索
</div>

js:

searchIn(){
   this.searchBtnFlag = !this.searchBtnFlag;
   this.$nextTick(function () {
  document.getElementById("inputVal").focus();
   })
 },

这样的写法只在第一次时起作用,如果点击取消后再次点击搜索按钮则不会再次使input框自动聚焦。

记录一下,以备以后忘了好找。

以上这篇vue 表单输入框不支持focus及blur事件的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
深入理解Vue的数据响应式
May 15 Vue.js
Vue h函数的使用详解
Feb 18 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 #Vue.js
Vue项目利用axios请求接口下载excel
Nov 17 #Vue.js
vue实现下载文件流完整前后端代码
Nov 17 #Vue.js
vue+iview实现文件上传
Nov 17 #Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 #Vue.js
vue+iview实现分页及查询功能
Nov 17 #Vue.js
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 #Vue.js
You might like
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
JavaScript 私有成员分析
2009/01/13 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
面试常见的js算法题
2017/03/23 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python实现数据库编程方法详解
2015/06/09 Python
Python实现的Excel文件读写类
2015/07/30 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
如何使用python操作vmware
2019/07/27 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
健康状况证明书
2014/11/26 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
销售人员管理制度
2015/08/06 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
python实现层次聚类的方法
2021/11/01 Python