uniapp input 获取焦点如何实现
在uniapp中,如何让input组件自动获取焦点?我试过在mounted生命周期里调用focus()方法,但没效果。请问正确的实现方式是什么?需要设置什么特殊属性吗?在iOS和安卓平台上都能正常使用吗?
2 回复
在uniapp中,可以通过focus属性或this.$refs.input.focus()方法让input获取焦点。例如在input标签中添加focus属性,或通过ref引用调用focus方法。
在 UniApp 中,可以通过以下方法实现 input 组件获取焦点:
方法一:使用 ref 获取组件实例
<template>
<view>
<input ref="myInput" type="text" placeholder="请输入内容" />
<button @click="focusInput">点击聚焦输入框</button>
</view>
</template>
<script>
export default {
methods: {
focusInput() {
// 通过 ref 获取 input 组件实例并聚焦
this.$refs.myInput.focus()
}
}
}
</script>
方法二:使用 focus 属性
<template>
<view>
<input
:focus="isFocus"
type="text"
placeholder="请输入内容"
@blur="isFocus = false"
/>
<button @click="isFocus = true">点击聚焦输入框</button>
</view>
</template>
<script>
export default {
data() {
return {
isFocus: false
}
}
}
</script>
方法三:页面加载时自动聚焦
<template>
<view>
<input ref="autoInput" type="text" placeholder="页面加载自动聚焦" />
</view>
</template>
<script>
export default {
onReady() {
// 页面准备好后自动聚焦
this.$nextTick(() => {
this.$refs.autoInput.focus()
})
}
}
</script>
注意事项
- ref 方式:更灵活,可以精确控制聚焦时机
- focus 属性:通过数据绑定控制,适合简单的显示/隐藏场景
- 兼容性:两种方法在 H5、小程序、App 端都支持
- 时机问题:确保在组件挂载完成后再调用 focus 方法
推荐使用 ref 方式,因为它更直观且性能更好。

