uni-app nvue页面input textarea获得焦点后点击其他区域无法失去焦点
uni-app nvue页面input textarea获得焦点后点击其他区域无法失去焦点
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
HBuilderX类型:
正式
HBuilderX版本号:
3.3.0
手机系统:
Android
手机系统版本号:
Android 12
手机厂商:
华为
手机机型:
红米k40
页面类型:
vue
vue版本:
vue2
打包方式:
云端
示例代码:
在nvue页面写一个input组件
操作步骤:
在nvue input获取焦点键盘弹出后点击其他位置input不会失去焦点,键盘也不会收回
预期结果:
在nvue input获取焦点键盘弹出后点击其他位置input不会失去焦点,键盘也不会收回
实际结果:
在nvue input获取焦点键盘弹出后点击其他位置input不会失去焦点,键盘也不会收回
bug描述:
在nvue input获取焦点键盘弹出后点击其他位置input不会失去焦点,键盘也不会收回
更多关于uni-app nvue页面input textarea获得焦点后点击其他区域无法失去焦点的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个玩意儿需要控制。
这算是bug也不算,前两年我用这个玩意儿的时候也存在的。
当时解决方案就是,弄一个大背景将输入框定位,放到大背景中点击大背景则控制键盘隐藏等。
更多关于uni-app nvue页面input textarea获得焦点后点击其他区域无法失去焦点的实战教程也可以访问 https://www.itying.com/category-93-b0.html
又是个常年不休的bug
这是一个已知的nvue页面常见问题,主要原因是nvue的渲染机制与vue页面不同。在nvue中,input/textarea组件获得焦点后,点击页面其他区域不会自动触发失焦事件。
解决方案:
-
手动绑定失焦事件 在页面根元素或需要触发失焦的区域添加
@tap事件,手动调用blur()方法:<template> <view @tap="handlePageTap"> <input ref="myInput" [@focus](/user/focus)="onFocus" /> </view> </template> <script> export default { methods: { handlePageTap() { if (this.$refs.myInput) { this.$refs.myInput.blur() } }, onFocus() { // 记录焦点状态 this.hasFocus = true } } } -
使用
@blur事件监听 确保input组件已绑定@blur事件,虽然这不能解决自动失焦问题,但可以配合手动失焦使用。 -
针对textarea的特别处理 如果使用textarea,同样需要手动处理:
<textarea ref="myTextarea" [@focus](/user/focus)="onFocus" />

