问题:点击输入框显示删除按钮,使用获取输入框聚焦事件,然后显示删除,失去焦点隐藏删除按钮

这个只有在安卓上面才有,电脑和苹果显示都是没有问题

解决思路

跳出失焦、聚焦事件的思维,使用点击事件,给大盒子设置全屏点击事件,然后阻止冒泡

1.将 输入框 和 文本域 改成点击事件,点击时显示,点击全屏其他地方隐藏

2.

<view class="address_box" :style="{'--global_color':global_color}" @tap.stop="viewTap">
		<view class="address_info">
			<view class="info_name">
				<text>收货人</text>
				<input :class="iscolName?'fw':''" type="text" placeholder="请输入收货人姓名"
					placeholder-style="color:#999999;font-weight: 400;" maxlength="25"
					v-model.trim="addressList.consignee" @tap="clickName" @input.stop="keyboardName"
					@blur="loseNamefocus" />
				<view @click="clear(0)" v-if="isNamedelete">
					<image src="../../static/image/address/delete.png"></image>
				</view>

			</view>
			<view class="info_iphone">
				<text>手机号码</text>
				<!-- placeholder-class="phcolor" -->
				<input :class="iscolIphone?'fw':''" type="number" maxlength="11" placeholder="请输入收货人手机号码"
					@blur="loseIphonefocus" placeholder-style="color:#999999;font-weight: 400;"
					v-model.number="addressList.mobile_number" @tap="clickTel" @input.stop="keyboardIphone" />
				<view @click="clear(1)" v-if="isIphonedelete">
					<image src="../../static/image/address/delete.png"></image>
				</view>

注意:

	clickAddress() {
				setTimeout(_ => {
					if (this.addressList.address != '') {
						this.isTextareadelete = true
						this.isIphonedelete = false
						this.isNamedelete = false
					}
				}, 50)

			},
			// 详细地址 监听键盘输入
			ketarea(e) {
				if (e.detail.value !== '') {
					this.isTextareadelete = true
				} else {
					this.isTextareadelete = false
				}
			},

不仅仅适用于显示按钮,只要涉及失焦、聚焦textarea与input有兼容,就可以换一种思路,不用失焦聚焦事件,改成点击事件!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐