当前位置:首页 > 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 已渲染。

vue 实现 input focus

<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 来实现自动聚焦。

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

标签: vueinput
分享给朋友:

相关文章

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue路由实现

vue路由实现

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

vue实现treetable

vue实现treetable

Vue实现TreeTable的方法 使用第三方组件库(如Element UI) Element UI的el-table组件支持树形表格展示,通过设置row-key和tree-props属性即可实现。…

vue router 实现onshow

vue router 实现onshow

Vue Router 实现 onShow 功能 Vue Router 本身没有直接提供 onShow 这样的生命周期钩子,但可以通过以下方法模拟类似功能。 使用导航守卫 导航守卫可以在路由切换时触发…

vue实现http拦截

vue实现http拦截

Vue 实现 HTTP 拦截 在 Vue 项目中,通常通过 Axios 实现 HTTP 拦截功能,用于统一处理请求和响应。以下是具体实现方法: 安装 Axios 通过 npm 或 yarn 安装 A…