当前位置:首页 > 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
分享给朋友:

相关文章

vue实现例子

vue实现例子

以下是一些常见的 Vue 实现例子,涵盖基础功能到进阶应用场景: 基础数据绑定 使用 v-model 实现双向数据绑定: <template> <div> &l…

vue实现ftp

vue实现ftp

Vue 中实现 FTP 功能 Vue 本身是一个前端框架,无法直接操作 FTP 协议(FTP 通常需要后端支持)。以下是两种常见实现方式: 前端与后端配合实现 FTP 前端通过 API 与后端通信,…

vue如何实现排序

vue如何实现排序

实现数组排序 在Vue中实现数组排序可以通过computed属性或methods来处理。假设有一个数组items,可以创建一个计算属性返回排序后的数组: data() { return {…

vue 实现多选框

vue 实现多选框

Vue 实现多选框的方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选框的选择功能。每个复选框的 value 属性会被添加到数组中,取消勾选时则从数…

vue实现右滑

vue实现右滑

Vue 实现右滑功能 右滑功能通常用于移动端应用,实现手势操作。以下是几种常见的实现方法: 使用 Hammer.js 库 Hammer.js 是一个专门处理手势的库,可以方便地实现右滑功能。…

vue 实现导出pdf

vue 实现导出pdf

使用 html2canvas 和 jsPDF 实现导出 PDF 在 Vue 项目中安装 html2canvas 和 jsPDF 依赖: npm install html2canvas jspdf 创…