快速解决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实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
js控制分页打印、打印分页示例
Feb 08 Javascript
JavaScript中定义类的方式详解
Jan 07 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
浅谈jquery上下滑动的注意事项
Oct 13 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
基于jstree使用AJAX请求获取数据形成树
Aug 29 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
Nov 16 Javascript
JS 封装父页面子页面交互接口的实例代码
Jun 25 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 Javascript
ES6中的Javascript解构的实现
Oct 30 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
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
angular6的响应式表单的实现
2018/10/10 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
Python入门学习之字符串与比较运算符
2015/10/12 Python
在Python中移动目录结构的方法
2016/01/31 Python
python脚本替换指定行实现步骤
2017/07/11 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
Python hashlib模块实例使用详解
2019/12/24 Python
学python爬虫能做什么
2020/07/29 Python
国际书籍零售商:Wordery
2017/11/01 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
大学生应聘自荐信
2013/10/11 职场文书
学生保证书范文
2014/04/28 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
教你怎么用Python实现多路径迷宫
2021/04/29 Python
用php如何解决大文件分片上传问题
2021/07/07 PHP