快速解决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 相关文章推荐
动态创建的表格单元格中的事件实现代码
Dec 30 Javascript
jquery提升性能最佳实践小结
Dec 06 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
Jquery实现顶部弹出框特效
Aug 08 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
jquery实现简单的遮罩层
Jan 08 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 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
德劲1103的维修打理经验
2021/03/02 无线电
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
vue组件name的作用小结
2018/05/23 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python实现实时监控文件的方法
2016/08/26 Python
python3学生名片管理v2.0版
2018/11/29 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
如何安装ruby on rails
2014/02/09 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
培训主管岗位职责
2014/02/01 职场文书
农民工讨薪标语
2014/06/26 职场文书
体育课外活动总结
2014/07/08 职场文书
理财计划书
2014/08/14 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
python实现简单的三子棋游戏
2022/04/28 Python
MySQL 计算连续登录天数
2022/05/11 MySQL