uni-app 微信小程序pc端 input输入框外部容器监听@tap时 点击input输入框外部容器tap事件未触发
uni-app 微信小程序pc端 input输入框外部容器监听@tap时 点击input输入框外部容器tap事件未触发
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win11 | HBuilderX |
操作步骤:
在微信小程序pc端,input 为只读状态, input输入框外部容器监听@tap时,点击input输入框
预期结果:
容器的tap事件会触发
实际结果:
容器的tap时间没有触发
bug描述:
在微信小程序pc端, input输入框外部容器监听@tap时,点击input输入框外部容器的tap事件没有触发到;在手机端可正常触发事件
更多关于uni-app 微信小程序pc端 input输入框外部容器监听@tap时 点击input输入框外部容器tap事件未触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
在 uni-app 中,如果你在微信小程序 PC 端使用 input 输入框,并且希望在点击输入框外部容器时触发 @tap 事件,但发现 @tap 事件未触发,可能是由于以下原因:
1. 事件冒泡问题
微信小程序的 PC 端和移动端的事件处理机制可能有所不同。input 输入框可能会阻止事件冒泡,导致外部的 @tap 事件无法触发。
2. 事件绑定问题
确保你已经正确地在外部容器上绑定了 @tap 事件。
解决方案
1. 使用 [@click](/user/click) 替代 @tap
在 PC 端,@tap 事件可能不如 [@click](/user/click) 事件可靠。你可以尝试使用 [@click](/user/click) 事件。
<view [@click](/user/click)="handleClick">
<input placeholder="请输入内容" />
</view>
methods: {
handleClick() {
console.log('外部容器被点击');
}
}
2. 使用 catchtap 或 catchclick 阻止事件冒泡
如果你希望确保事件能够冒泡到外部容器,可以使用 catchtap 或 catchclick。
<view [@click](/user/click)="handleClick">
<input placeholder="请输入内容" catchtap="handleInputTap" />
</view>
methods: {
handleClick() {
console.log('外部容器被点击');
},
handleInputTap() {
console.log('输入框被点击');
}
}
3. 使用 @blur 事件
如果你希望在用户离开输入框时触发某些操作,可以使用 @blur 事件。
<view [@click](/user/click)="handleClick">
<input placeholder="请输入内容" @blur="handleInputBlur" />
</view>
methods: {
handleClick() {
console.log('外部容器被点击');
},
handleInputBlur() {
console.log('输入框失去焦点');
}
}


