博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在vue项目中引用element-ui时 让el-input 获取焦点的方法
阅读量:6879 次
发布时间:2019-06-26

本文共 674 字,大约阅读时间需要 2 分钟。

在制作项目的时候遇到一个需求,点击一个按钮弹出一个input输入框,并让输入框获得焦点,项目中引用了element-ui

在网上查找了很多方法,

但是在实际使用中发现了一个问题
无论是使用$ref获取input元素然后使用focus方法
还是使用饿了么组件自带的autoFocus
都只有在第一次点击按钮的时候可以让Input获得焦点,在不刷新页面的情况下,第二次以后的按钮点击都不会让Input获得焦点。我到现在也没有搞明白这是为什么,猜测了一下是存才一个全局变量,当我们第一次使Input获得焦点以后改变了这个预设变量的值,在Input失去焦点的时候并没有将这个值重置,所以导致了后面的问题。
废话不多说,

下面是当同时使用Vue和el-input的时候的解决方案。

Vue本身提供了自定义指令的方法

// 注册一个全局自定义指令 `v-focus`  Vue.directive('focus', function (el) {    el.focus()  })

这样使我们在组件中可以自用的调用v-focus方法,给他绑定定义布尔变量来控制元素是否获得焦点

但是这里要注意的是组件<el-input>本身在页面中渲染成了一个div元素
所以我们要在<el-input>被绑定为v-focus的同时
在自定义指令中获取组件下通过querySelector()方法获取input元素

Vue.directive('focus', function (el) {  el.querySelector('input').focus()})

转载地址:http://kjgfl.baihongyu.com/

你可能感兴趣的文章
C#简单的多线程
查看>>
HTML转换成字符串
查看>>
关于使用CTE(公用表表达式)的递归查询
查看>>
C#简单的面试题目(五)
查看>>
讲故事学Socket编程
查看>>
ural(Timus) 1037. Memory Management
查看>>
jquery实现菜单的折叠并且变换图片
查看>>
微信公众平台消息接口开发(27)彩票查询
查看>>
hdu 1829+hdu 1856(并查集)
查看>>
WIN32 DLL动态链接库
查看>>
用vmware运行简单的引导代码
查看>>
WPF中资源文件的使用
查看>>
Request 分别获取具有相同 name 属性表单元素值
查看>>
错误码:2003 不能连接到 MySQL 服务器在 (10061)
查看>>
js判断文件格式及大小
查看>>
如何确定当前的PowerShell的版本?
查看>>
浅谈json以及一些常用的解析
查看>>
关于编程的一些思考
查看>>
iphone之NSArray比较大小
查看>>
字母列拉丁方块填数字
查看>>