Vue使用el-input自动获取焦点和二次获取焦点问题及解决

这篇文章主要介绍了Vue使用el-input自动获取焦点和二次获取焦点问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
使用el-input自动获取焦点和二次获取焦点问题
最近,碰到一个问题,就是输入框旁边有一个编辑按钮,点击时,才可以对输入框进行编辑:
要实现的效果:
为了方便输入,需要自动获取焦点,所以加入了autofocus,但是发现,只有第一个并且第一次点击才起作用。
查了网上的一些文档,说是跟dom的渲染顺序和数据的缓存有点儿关系,至于深层次的原因,还没查到。
然后使用了Vue提供的自定义指令来解决,还有一点儿需要注意,el-input在页面渲染后,外层是个div,需要拿到里面的input才会有效果。
<el-input v-focus></el-input> directives: { // 注册一个局部的自定义指令 v-focus focus: { // 指令的定义 inserted: function (el) { // 聚焦元素 el.querySelector('input').focus() } } },
还有一种解决方案,是使用 Vue.nextTick() 和 Ref去做,例子就不去写了,都是去操作dom的。
使input和el-input自动获取焦点的处理
【普通input的自定义指令操作】:先在入口文件注册一个全局自定义指令
// main.js Vue.directive('focus', { inserted (el, binding, vnode) { // 聚焦元素 el.focus() } })
【普通input的自定义指令使用】:v-"+指令名"
// index.vue <input v-focus placeholder="因为有v-focus,所以我聚焦了" />
【el-input的自定义指令操作】:先在入口文件注册一个全局自定义指令
// main.js Vue.directive('fo', { inserted (el, binding, vnode) { // 聚焦元素 el.querySelector('input').focus() } })
【el-input的自定义指令使用】:v-"+指令名"
// index.vue <el-input v-fo placeholder="因为有v-fo,所以我聚焦了"></el-input>
相关推荐
PHP实现部分字符隐藏
沙雕mars · 1199浏览 · 2019-04-28 09:47:56

Java中ArrayList和LinkedList区别
kenrry1992 · 808浏览 · 2019-05-08 21:14:54

5月语言排行榜:R 跌出前二十,Python 紧咬 C++
manongba · 620浏览 · 2019-05-09 17:27:24

Tomcat 下载及安装配置
manongba · 858浏览 · 2019-05-13 21:03:56

什么是SpringBoot
iamitnan · 976浏览 · 2019-05-14 22:20:36

分类专栏
最新发布
最热排行
0评论