快速解决element的autofocus失效问题


Posted in Javascript onSeptember 08, 2020

原因:

autofocus是vue中input的原生属性,element也支持这种方法,

但是element中的el-input组件外面还有其他组件, 导致autofocus失效, 只能手动调用focus方法来聚集。

方法:

绑定ref

<el-input ref="myNameId" v-model="form.name" />

this.$refs.myNameId.focus();

动态绑定ref

<el-input :ref=" 'input'+ form.id " v-model="form.name" />

this.$nextTick(()=>{
 let id = 'input'+this.form.id;
 this.$refs[id].focus();
})

补充知识:element input输入框自动获取焦点

最近项目中在做表单的时候,需要自动滚动到评论框,并且让评论框自动聚焦,这就需要手动触发输入框的 focus 状态。

但是,element并不支持autofocus属性,那就只能通过原生的js效果获取聚焦效果了

document.getElementById("input").focus();

或者利用vue的ref属性也可以实现聚焦效果:

原理其实很简单,Element 已经提供了 focus 方法,但是文档并没有写明如何去调用,下面是在el-input标签上加入ref属性,然后在需要的地方直接调用方法就可以了

<el-input v-model="input" placeholder="请输入内容" ref="input"></el-input>

this.$nextTick(() => {
  this.$refs.input.focus()
 })

注意:一个页面只能有一个聚焦效果

last , vue也支持自定义指令

当页面加载时,该元素将获得焦点 (注意:autofocus 在移动版 Safari 上不工作)。事实上,只要你在打开这个页面后还没点击过任何内容,这个输入框就应当还是处于聚焦状态。现在让我们用指令来实现这个功能:

// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
 // 当被绑定的元素插入到 DOM 中时……
 inserted: function (el) {
 // 聚焦元素
 el.focus()
 // element-ui
 el.children[0].focus()
 // 元素有变化,如show或者父元素变化可以加延时或判断
 setTimeout(_ => {
  el.children[0].focus()
 })
 }
})

以上这篇快速解决element的autofocus失效问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
三级下拉菜单的js实现代码
May 23 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
jQuery div拖拽用法实例
Jan 14 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
vue脚手架搭建过程图解
Jun 06 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
Aug 27 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
Nov 09 Javascript
vue axios请求成功却进入catch的原因分析
Sep 08 #Javascript
JavaScript数组类型Array相关的属性与方法详解
Sep 08 #Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
Sep 08 #Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 #Javascript
基于postman获取动态数据过程详解
Sep 08 #Javascript
解决vue请求接口第一次成功,第二次失败问题
Sep 08 #Javascript
如何区分vue中的v-show 与 v-if
Sep 08 #Javascript
You might like
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python3转换code128条形码的方法
2019/04/17 Python
Python 监测文件是否更新的方法
2019/06/10 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
django框架使用方法详解
2019/07/18 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
django如何通过类视图使用装饰器
2019/07/24 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
python 实现的车牌识别项目
2021/01/25 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
发展部经理职责规定
2014/02/22 职场文书
校园文明标语
2014/06/13 职场文书
小学教师教育随笔
2015/08/14 职场文书
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL
Python实现对齐打印 format函数的用法
2022/04/28 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android