问题概述:
想要实现效果:在某个输入框按下回车后,聚焦到按钮上:
问题复现
在输入框里按下回车键,然后通过Vue的refs获取元素,然后使用focus:
<el-input v-model="timeNote" type="text"
@keydown.enter="$refs.addOneTime1.focus()" >
</el-input>
<el-button type="primary" @click="addOneTime" ref="addOneTime1">添加</el-button>
当在输入框按下回车键的时候,控制台报错:
疑惑点:
- 我对比了下官方文档,好像button没有focus事件(input框有),是否button组件不支持focus?
- 我尝试在input输入框里按下按键tab,是能通过tab切换到按钮上的;
我尝试用原生的HTML,是可以调用focus的:
<button id="btn1">按钮1</button> <button id="btn2">按钮2</button> <script> var btn1 = document.getElementById('btn1') var btn2 = document.getElementById('btn2') btn1.onclick = function(){ alert('btn1被点击了!!') } btn2.onclick = function(){ btn1.focus() } </script> <style> button:focus { color: red; } </style>
- 本人还是希望能用Element plus的组件实现,尽量让页面风格保持一直
已在百度和思否论坛内搜索了一下,并未看到类似的需求
参考资料
官方文档:
本地环境
Win10 64位 专业版
Electron: 13.0.0
@vue/cli 5.0.4
Vue:3.2.13,通过脚手架安装
node: v16.15.1. 通过官网安装,没有用nvm
npm: 8.11.0
element-plus: 2.2.9
源码中导出了el-button对应的button的原生dom,你可以
$refs.addOneTime1.ref.focus()
这样来focus el-buttonps:

我试了一下,原生的js也是同样的效果,也就是说这是原生的事件逻辑