在博主印象中设置只读应该是readonly,太久没有写微信小程序,发现没有效果,
于是简单写篇文章记录下。

微信小程序中,设置 readonly 属性后,input 组件仍然可以交互的常见原因:

<input class="search-input" placeholder="请输入你需要搜索的型号" disabled/>
特点:
<input class="search-input" placeholder="请输入你需要搜索的型号" bindtap="preventTap" catchtouchstart="preventTouch"/>
Page({ preventTap(e) { // 阻止默认行为 return false; }, preventTouch(e) { // 阻止触摸事件 return false; }})/* 禁止所有交互 */.search-input { pointer-events: none; -webkit-user-select: none; user-select: none;}/* 仅禁止文本选择 */.search-input { user-select: none;}<view class="search-display"> 请输入你需要搜索的型号</view>
<view wx:if="{{isReadonly}}"> <view class="search-text">{{searchValue}}</view></view><view wx:else> <input class="search-input" placeholder="请输入你需要搜索的型号" bindinput="onInput" /></view>根据具体场景选择方案:
view 组件disabled 属性readonly + 事件阻止pointer-events: nonedisabled 状态需考虑UI兼容性<!-- 综合方案:readonly + 事件阻止 --><input class="search-input readonly-style" placeholder="请输入你需要搜索的型号" readonly bindtap="preventAction" value="{{searchValue}}"/>Page({ data: { searchValue: '' }, preventAction() { wx.showToast({ title: '当前不可编辑', icon: 'none' }) return false; }}).readonly-style { background-color: #f5f5f5; color: #999;}按以上方案实施,可有效解决微信小程序中 input 组件只读属性失效问题。