当前位置:首页 > 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 和条件判断来实现。

vue 实现 input focus

<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 变量访问。
  • 自定义指令可以复用,适合需要多次聚焦的场景。

标签: vueinput
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API metho…

vue alert实现

vue alert实现

使用 Vue 实现 Alert 组件 在 Vue 中实现 Alert 组件可以通过自定义组件或结合第三方库完成。以下是几种常见方法: 自定义 Alert 组件 创建一个可复用的 Alert 组件,通…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…