当前位置:首页 > VUE

vue 实现获取焦点

2026-03-28 10:00:13VUE

在 Vue 中实现获取焦点

通过 reffocus() 方法可以手动触发元素的焦点。在 Vue 模板中为需要获取焦点的元素添加 ref 属性,然后在 JavaScript 中调用 focus()

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

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

使用自定义指令实现自动获取焦点

可以创建一个自定义指令 v-focus,在元素插入 DOM 时自动聚焦。

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

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

在 Vue 3 中使用 Composition API

Vue 3 的 Composition API 提供了更灵活的方式来管理焦点逻辑。

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

<script>
import { ref, onMounted } from 'vue';

export default {
  setup() {
    const inputRef = ref(null);

    onMounted(() => {
      inputRef.value.focus();
    });

    return { inputRef };
  }
};
</script>

动态控制焦点

通过绑定 v-ifv-show 结合 nextTick 确保元素渲染完成后再聚焦。

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

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

表单验证后自动聚焦错误字段

结合表单验证库(如 VeeValidate),在验证失败时将焦点移动到第一个错误字段。

vue 实现获取焦点

<template>
  <form @submit.prevent="submitForm">
    <input v-model="email" ref="emailRef" />
    <input v-model="password" ref="passwordRef" />
    <button type="submit">提交</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      email: '',
      password: ''
    };
  },
  methods: {
    submitForm() {
      if (!this.email) {
        this.$refs.emailRef.focus();
        return;
      }
      if (!this.password) {
        this.$refs.passwordRef.focus();
        return;
      }
      // 提交逻辑
    }
  }
};
</script>

以上方法涵盖了 Vue 中获取焦点的常见场景,可根据具体需求选择适合的方式。

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

相关文章

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现注销

vue实现注销

实现用户注销功能 在Vue应用中实现用户注销功能通常涉及清除用户会话、重置应用状态并跳转到登录页面。以下是具体实现方法: 清除用户认证信息 使用Vuex或Pinia管理用户状态时,需在注销时重置存储…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…

vue实现分栏

vue实现分栏

Vue实现分栏的常见方法 使用CSS Flexbox布局 通过Flexbox可以快速实现分栏效果,适合大多数响应式布局场景 <template> <div class="con…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…

vue实现curd

vue实现curd

Vue实现CRUD操作 初始化Vue项目 使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求 vue create crud-demo cd crud-demo npm inst…