当前位置:首页 > VUE

vue 实现获取焦点

2026-03-07 23:44:27VUE

Vue 实现获取焦点的方法

在 Vue 中实现获取焦点可以通过多种方式,以下是几种常见的实现方法:

使用 ref 和 $refs

通过 ref 属性标记元素,然后在方法中调用 focus() 方法:

<template>
  <input ref="inputRef" />
  <button @click="focusInput">获取焦点</button>
</template>

<script>
export default {
  methods: {
    focusInput() {
      this.$refs.inputRef.focus()
    }
  }
}
</script>

使用 v-focus 自定义指令

创建一个自定义指令来自动聚焦元素:

<template>
  <input v-focus />
</template>

<script>
export default {
  directives: {
    focus: {
      inserted(el) {
        el.focus()
      }
    }
  }
}
</script>

使用 autofocus 属性

对于简单的场景,可以直接使用 HTML5 的 autofocus 属性:

<template>
  <input autofocus />
</template>

在 mounted 钩子中获取焦点

当组件挂载完成后自动获取焦点:

<template>
  <input ref="inputRef" />
</template>

<script>
export default {
  mounted() {
    this.$refs.inputRef.focus()
  }
}
</script>

使用 nextTick 确保 DOM 更新

在某些需要等待 DOM 更新的情况下使用:

vue 实现获取焦点

<template>
  <input ref="inputRef" v-if="showInput" />
  <button @click="showInput = true">显示并聚焦输入框</button>
</template>

<script>
export default {
  data() {
    return {
      showInput: false
    }
  },
  watch: {
    showInput(newVal) {
      if (newVal) {
        this.$nextTick(() => {
          this.$refs.inputRef.focus()
        })
      }
    }
  }
}
</script>

以上方法可以根据具体需求选择使用,ref 方式最为灵活,自定义指令适合需要复用的场景,autofocus 属性最简单但有限制。

标签: 焦点vue
分享给朋友:

相关文章

vue实现轮播图

vue实现轮播图

Vue 实现轮播图的方法 使用第三方库(推荐) Vue 生态中有许多成熟的轮播图组件库,例如 Swiper、Vue-Awesome-Swiper 等,它们提供了丰富的配置和响应式支持。 安装 vue…

vue 实现多选

vue 实现多选

Vue 实现多选的方法 在 Vue 中实现多选功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-model 绑定数组 Vue 的 v-model 指令可以与复选框结合使用,绑定到一个数…

vue实现生成二维码

vue实现生成二维码

使用qrcode.vue库生成二维码 安装qrcode.vue库: npm install qrcode.vue --save 在Vue组件中使用: <template> <…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现RTMP

vue实现RTMP

Vue 中实现 RTMP 流播放 RTMP(Real-Time Messaging Protocol)是一种用于实时音视频流传输的协议。在 Vue 中实现 RTMP 播放通常需要借助第三方库或播放器。…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…