快速解决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 HTML中的table
Apr 15 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
用jquery实现点击栏目背景色改变
Dec 10 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
Aug 14 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
js实现上传图片及时预览
May 07 Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 Javascript
vue跨域解决方法
Oct 15 Javascript
JS实现拖拽元素时与另一元素碰撞检测
Aug 27 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 Javascript
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
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 操作文件的一些FAQ总结
2009/02/12 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
详解php中的implements 使用
2017/06/13 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Python 流程控制实例代码
2009/09/25 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python解析含有重复key的json方法
2019/01/22 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
tensorflow自定义激活函数实例
2020/02/04 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
培根随笔读书笔记
2015/07/01 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
使用tensorflow 实现反向传播求导
2021/05/26 Python