uni-app input 聚焦调用@focus,但是收到的event参数值为undefined
uni-app input 聚焦调用@focus,但是收到的event参数值为undefined
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 10.13.6 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:10.13.6
HBuilderX类型:正式
HBuilderX版本号:3.3.3
手机系统:Android
手机系统版本号:Android 4.4
手机厂商:smartisan
手机机型:T1
页面类型:nvue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
### 示例代码:
```html
<template>
<view class="container">
<text class="intro">input focus</text>
<input class="custom-input" type="number" maxlength="5" auto-blur="true" [@focus](/user/focus)="focusCustomDay()" @input="onCustomDayInput" @tap="selectDay(0)" placeholder="test focus" placeholder-style="font-size:14px; text-align: center;" />
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
focusCustomDay(event) {
console.log(" - focusCustomDay",event)
},
onCustomDayInput(e) {
console.log(" - onCustomDayInput",e)
},
selectDay(d) {
console.log(" - selectDay",d)
}
}
}
</script>
<style>
.custom-input {
height: 100rpx;
margin: 30rpx;
background-color: #F2f2f2;
border-radius: 12rpx
}
</style>
操作步骤:
- 点击input
[@focus](/user/focus)指定的函数被调用- 打印event值为undefined
预期结果:
input 聚焦调用[@focus](/user/focus),能收到正常的event参数值
实际结果:
input 聚焦调用[@focus](/user/focus),但是收到的event参数值为undefined
bug描述:
【报Bug】input 聚焦调用[@focus](/user/focus),但是收到的event参数值为undefined
更多关于uni-app input 聚焦调用@focus,但是收到的event参数值为undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app input 聚焦调用@focus,但是收到的event参数值为undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 的 nvue 页面中,[@focus](/user/focus) 事件确实可能返回 undefined,这是 nvue 与普通 vue 页面的一个差异。根据官方文档和社区反馈,nvue 中部分事件参数与标准 Web 规范不完全一致,focus 事件可能不携带 event 对象。
解决方案:
-
检查事件绑定方式:确保事件绑定正确,例如
[@focus](/user/focus)="focusCustomDay"(不加括号)会自动传递事件对象,而[@focus](/user/focus)="focusCustomDay()"会传递 undefined。你的代码中使用了[@focus](/user/focus)="focusCustomDay()",这会导致参数丢失。请改为:<input [@focus](/user/focus)="focusCustomDay" />或显式传递
$event:<input [@focus](/user/focus)="focusCustomDay($event)" /> -
使用兼容性写法:如果上述修改后仍无效,可能是 nvue 在 Android 4.4 等低版本平台的兼容性问题。建议通过其他方式获取输入框信息,例如在
@input事件中处理逻辑,或使用ref获取输入框实例:<input ref="myInput" [@focus](/user/focus)="handleFocus" /> // 在方法中通过 this.$refs.myInput 访问

