快速解决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 相关文章推荐
js获取变量
Aug 24 Javascript
Javascript中的var_dump函数实现代码
Sep 07 Javascript
测试你的JS的掌握程度的代码
Dec 09 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
3种vue组件的书写形式
Nov 29 Javascript
微信小程序框架wepy之动态控制类名
Sep 14 Javascript
微信小程序template模版的使用方法
Apr 13 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
php导入导出excel实例
2013/10/25 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
js计算精度问题小结
2013/04/22 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
JS中的BOM应用
2018/02/02 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python三级菜单的实例
2017/09/13 Python
python reduce 函数使用详解
2017/12/05 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
解除劳动合同协议书
2014/09/17 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
新课程改革心得体会
2016/01/22 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
代码解析React中setState同步和异步问题
2021/06/03 Javascript
在 Python 中利用 Pool 进行多线程
2022/04/24 Python