当前位置:首页 > VUE

vue 实现 input focus

2026-02-10 23:05:23VUE

Vue 实现 input focus 的方法

使用 ref 和 $refs

在 Vue 中可以通过 ref$refs 来获取 DOM 元素并调用其 focus() 方法。

<template>
  <input ref="inputRef" type="text" />
  <button @click="focusInput">Focus Input</button>
</template>

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

使用 v-model 和 nextTick

如果需要自动聚焦输入框,可以在组件挂载后使用 nextTick 确保 DOM 已渲染。

<template>
  <input v-model="inputValue" ref="inputRef" type="text" />
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    };
  },
  mounted() {
    this.$nextTick(() => {
      this.$refs.inputRef.focus();
    });
  }
};
</script>

使用自定义指令

可以创建一个自定义指令 v-focus 来实现自动聚焦。

<template>
  <input v-focus type="text" />
</template>

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

使用 Composition API (Vue 3)

在 Vue 3 中,可以使用 refonMounted 来实现类似功能。

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

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

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

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

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

动态聚焦多个输入框

如果需要动态控制多个输入框的聚焦状态,可以通过动态绑定 ref 和条件判断来实现。

<template>
  <input v-for="(item, index) in items" :key="index" :ref="`input${index}`" type="text" />
  <button @click="focusInput(0)">Focus First Input</button>
</template>

<script>
export default {
  data() {
    return {
      items: [1, 2, 3]
    };
  },
  methods: {
    focusInput(index) {
      this.$refs[`input${index}`][0].focus();
    }
  }
};
</script>

注意事项

  • 确保 DOM 已渲染完成后再调用 focus(),否则可能无法生效。
  • 在 Vue 3 中,$refs 是响应式的,可以直接通过 ref 变量访问。
  • 自定义指令可以复用,适合需要多次聚焦的场景。

vue 实现 input focus

标签: vueinput
分享给朋友:

相关文章

vue实现单点

vue实现单点

Vue 实现单点登录(SSO)方案 单点登录(SSO)允许用户在多个相关但独立的系统中使用同一组凭证登录。以下是基于 Vue 的实现方案: 基于 OAuth2/OpenID Connect 的实现…

vue实现跑车

vue实现跑车

Vue 实现跑车动画效果 使用 Vue 结合 CSS 动画可以实现跑车在屏幕上移动的效果。以下是一个完整的实现方案: 创建 Vue 组件结构 <template> <div…

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生改…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现建模

vue实现建模

Vue 实现建模的方法 在 Vue 中实现建模通常涉及数据绑定、组件化和状态管理。以下是几种常见的方法: 数据驱动建模 Vue 的核心是数据驱动视图。通过定义数据模型,Vue 会自动更新 DOM。…

vue el 实现

vue el 实现

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