快速解决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查找父节点的简单方法
Jun 28 Javascript
javascript读取Xml文件做一个二级联动菜单示例
Mar 17 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
JavaScript中的Math.LN2属性用法详解
Jun 12 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
JavaScript实现点击按钮直接打印
Jan 06 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
通过构造函数实例化对象的方法
Jun 28 Javascript
VUE2实现事件驱动弹窗示例
Oct 21 Javascript
小程序关于请求同步的总结
May 05 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
vue 导出文件,携带请求头token操作
Sep 10 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微信公众平台开发(一) 配置接口
2016/12/06 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
javascript self对象使用详解
2016/10/18 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
幼儿园门卫制度
2014/01/29 职场文书
超市重阳节活动方案
2014/02/10 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
学校班班通实施方案
2014/06/11 职场文书
无犯罪记录证明
2014/09/19 职场文书
研讨会致辞
2015/07/31 职场文书
高二语文教学反思
2016/02/16 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
mysql事务对效率的影响分析总结
2021/10/24 MySQL
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers