当前位置:首页 > 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 时自动聚焦。

vue 实现获取焦点

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

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

在 Vue 3 中使用 Composition API

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

vue 实现获取焦点

<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),在验证失败时将焦点移动到第一个错误字段。

<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实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &l…

vue app 实现

vue app 实现

Vue App 实现步骤 创建Vue项目 使用Vue CLI或Vite初始化项目。Vue CLI适合传统项目,Vite适合现代轻量级应用。 npm create vue@latest my-vu…

vue实现上划

vue实现上划

Vue 实现上划功能 在Vue中实现上划功能,可以通过监听触摸事件(touchstart、touchmove、touchend)来判断用户的手势方向。以下是实现上划功能的几种方法: 监听触摸事件 通…

用vue实现echarts

用vue实现echarts

使用 Vue 实现 ECharts 安装依赖 在 Vue 项目中安装 ECharts 和 Vue-ECharts(官方推荐的 Vue 封装库): npm install echarts vue-ec…

vue实现回顶部

vue实现回顶部

实现方法一:使用 window.scrollTo 在Vue组件中,可以通过调用 window.scrollTo 方法平滑滚动到页面顶部。该方法接受一个配置对象,指定滚动行为为平滑(smooth)。…

vue实现效果展示

vue实现效果展示

Vue 实现效果展示的方法 动态数据绑定展示 通过 Vue 的响应式特性,实时展示数据变化。例如,表单输入与预览同步: <template> <div> <…