当前位置: 首页 > article >正文

Vue输入框获取焦点

1. 元素未渲染完成


如果你在组件挂载或数据更新后立即调用 focus(),可能元素还未渲染到 DOM 中,导致 focus() 失效。

解决方法:确保在元素渲染完成后再调用 focus()。可以使用 nextTick 确保 DOM 更新完成。


2. ref 未正确绑定


确保 ref 正确绑定到目标元素上。

<input ref="waybillNumberRef" />


3. 元素不可聚焦


不是所有 HTML 元素都支持 focus() 方法。确保目标元素是 input、textarea、button 等可聚焦元素。

如果目标元素是 div 或其他不可聚焦元素,可以为其添加 tabindex 属性:

<div ref="waybillNumberRef" tabindex="-1"></div>


4. 元素被隐藏或禁用


如果目标元素被 display: none 或 visibility: hidden 隐藏,或者被 disabled 禁用,focus() 会失效。

解决方法:确保元素可见且未被禁用。


5. 异步操作未完成


如果 focus() 依赖于异步操作(如数据加载),确保在异步操作完成后再调用 focus()。
例如:

 


<el-input

            ref="waybillNumberRef"

            v-model.trim="queryParams.expressCode"

            placeholder="请输入运单号"

            clearable

            style="width: 240px"

            @keyup.enter="waybillNumbeKeyup"

            :disabled="false"

          />
<el-form-item>
          <el-button
            type="primary"
            plain
            @click="replacingWaybill"
            :disabled="pageData.id == undefined"
            >更换运单</el-button
          >
const { proxy } = getCurrentInstance();
import { ref } from "vue";

// 更换运单点击
function replacingWaybill() {
// 运单号输入框获取焦点
  proxy.$refs.waybillNumberRef.focus();
}


http://www.kler.cn/a/573634.html

相关文章:

  • 【深度学习】—— 深入 Keras:从基础到实战的深度学习指南 第11章 共12章
  • 聊一聊 IM 要如何提升用户体验?
  • 五、Redis 持久化:RDB 与 AOF 深入解析与优化策略
  • 深入探索 jvm-sandbox 与 jvm-sandbox-repeater 在微服务测试中的应用
  • 蓝桥杯每日一题:第一周周四哞叫时间
  • 前端大文件上传
  • ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯
  • MDM 如何彻底改变医疗设备的远程管理
  • MacOS 10.15上使用Docker遇到的几个问题
  • js操作字符串的常用方法
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例4: 自定义插槽
  • vulnhub靶场之【digitalworld.local系列】的mercy靶机
  • 有关Java中的集合(1):List<T>和Set<T>
  • 一文学会Spring
  • WEB12~13
  • 54 异常的学习总结
  • TypeScript系列04-泛型编程
  • CRC算法(C语言)
  • DApp开发从入门到精通:以太坊/Solana公链生态实战解析
  • 【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)