快速解决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 相关文章推荐
jQuery 技巧小结
Apr 02 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
js对文章内容进行分页示例代码
Mar 05 Javascript
jquery中使用循环下拉菜单示例代码
Sep 24 Javascript
JS替换字符串中空格方法
Apr 17 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
bootstrap选项卡使用方法解析
Jan 11 Javascript
移动端手指放大缩小插件与js源码
May 22 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
php表单请求获得数据求和示例
2014/05/15 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
jquery中this的使用说明
2010/09/06 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
javascript闭包的理解
2015/04/01 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python的pycurl包用法简介
2015/11/13 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python实现大量图片重命名
2020/03/23 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
python中的插入排序的简单用法
2021/01/19 Python
最新党员的自我评价分享
2013/11/04 职场文书
企业为何需要商业计划书
2013/12/26 职场文书
股东授权委托书范本
2014/09/13 职场文书
大学生学年个人总结
2015/02/15 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
民主生活会意见
2015/06/05 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技