Vue3的Element PLus组件, button无法聚焦(focus)?

问题概述:

想要实现效果:在某个输入框按下回车后,聚焦到按钮上:

image.png

问题复现

在输入框里按下回车键,然后通过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>

当在输入框按下回车键的时候,控制台报错:
image.png

疑惑点:

  1. 我对比了下官方文档,好像button没有focus事件(input框有),是否button组件不支持focus?
  2. 我尝试在input输入框里按下按键tab,是能通过tab切换到按钮上的;
  3. 我尝试用原生的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>
  4. 本人还是希望能用Element plus的组件实现,尽量让页面风格保持一直

已在百度和思否论坛内搜索了一下,并未看到类似的需求

参考资料

官方文档:

Button 按钮 | Element Plus

Input 输入框 | 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

阅读 4.5k
1 个回答

image.png
源码中导出了el-button对应的button的原生dom,你可以
$refs.addOneTime1.ref.focus()这样来focus el-button

ps:
image.png

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题