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如何循环提取对象数组中的值
Nov 18 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
详解Vue router路由
Nov 20 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
google地图的路线实现代码
2009/08/20 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python 的内置字符串方法小结
2016/03/15 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
使用Python设计一个代码统计工具
2018/04/04 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
汽修专业学生自我鉴定
2013/11/16 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
团代会邀请函
2015/02/02 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
西安事变观后感
2015/06/12 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫