微信小程序中input组件为什么设置readonly只读属性没有作用(失效)?

 更新时间:2026年01月31日 15:31:35   作者:全栈小5  
本文总结了微信小程序中input组件设置readonly只读属性失效的原因,并介绍了三种核心解决方案:使用disabled属性替代、事件阻止和CSS控制,同时,还推荐了替代方案和最佳实践建议,并指出了注意事项

前言

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

一、问题定位

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

  1. readonly 属性限制:仅阻止键盘输入,但仍可聚焦和长按复制
  2. 事件冒泡未处理:未阻止 touch/click 事件传播
  3. 样式冲突影响:CSS 可能覆盖了默认只读行为

二、核心解决方案

方案一:使用 disabled 替代

<input 
  class="search-input" 
  placeholder="请输入你需要搜索的型号"
  disabled
/>

特点

  • 完全禁止交互
  • 组件变为灰色不可用状态
  • 适用于表单禁用场景

方案二:事件阻止方案

<input 
  class="search-input" 
  placeholder="请输入你需要搜索的型号"
  bindtap="preventTap"
  catchtouchstart="preventTouch"
/>
Page({
  preventTap(e) {
    // 阻止默认行为
    return false;
  },
  preventTouch(e) {
    // 阻止触摸事件
    return false;
  }
})

方案三:CSS 控制交互

/* 禁止所有交互 */
.search-input {
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
}

/* 仅禁止文本选择 */
.search-input {
  user-select: none;
}

三、替代方案推荐

方案一:使用 view 组件展示

<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>

四、最佳实践建议

根据具体场景选择方案:

  1. 纯展示场景 → 使用 view 组件
  2. 表单禁用场景 → 使用 disabled 属性
  3. 需要聚焦但不可编辑readonly + 事件阻止
  4. 临时只读需求 → CSS pointer-events: none

五、注意事项

  1. 真机测试:部分属性在模拟器和真机表现不同
  2. 样式适配disabled 状态需考虑UI兼容性
  3. 用户体验:明确告知用户当前状态(如:置灰、提示文案)
  4. 版本兼容:确保基础库版本支持所用属性

六、完整示例代码

<!-- 综合方案: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 组件只读属性失效问题。

到此这篇关于微信小程序中input组件为什么设置readonly只读属性没有作用(失效)?的文章就介绍到这了,更多相关小程序input设置readonly失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Windows系统下Git的详细安装步骤和基础设置指南

    Windows系统下Git的详细安装步骤和基础设置指南

    本文提供了Windows系统下Git的完整安装配置指南,涵盖下载安装、验证配置、基础设置、环境变量配置、常用命令示例及常见问题解决方案,并推荐了常用的图形化客户端工具,需要的朋友可以参考下
    2026-04-04
  • 基于rsync写脚本实现多节点多服务器文件一键同步的方法

    基于rsync写脚本实现多节点多服务器文件一键同步的方法

    这篇文章主要介绍了利用rsync写脚本实现多节点多服务器文件一键同步,本文将介绍 scp 和 rsync 两个命令及基本语法介绍,需要的朋友可以参考下
    2022-01-01
  • 解决idea打开窗口/tab过多导致隐藏的问题

    解决idea打开窗口/tab过多导致隐藏的问题

    这篇文章主要介绍了解决idea打开窗口/tab过多导致隐藏的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • .gitignore文件作用及使用方法详解

    .gitignore文件作用及使用方法详解

    这篇文章主要为大家介绍了.gitignore文件作用及使用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • git分支或指定文件回退到指定版本命令详解

    git分支或指定文件回退到指定版本命令详解

    作为一名后端开发,相信大家一定遇到过这样的情景,代码开发人员过多,并且开发分支过多,导致代码版本管理困难,这样就难免遇到一些代码合并出错,下面这篇文章主要给大家介绍了关于git分支或指定文件回退到指定版本命令的相关资料,需要的朋友可以参考下
    2023-12-12
  • 深入剖析从输入URL到页面显示过程原理

    深入剖析从输入URL到页面显示过程原理

    这篇文章主要为大家深入剖析了从输入URL到页面显示这中间发生的过程原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 手把手教你使用Git(图文教程)

    手把手教你使用Git(图文教程)

    这篇文章主要介绍了手把手教你使用Git(图文教程),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • chatGPT使用及注册过程中常见的一些错误解决方法(所有报错汇总)

    chatGPT使用及注册过程中常见的一些错误解决方法(所有报错汇总)

    这篇文章主要介绍了chatGPT注册报错及使用过程中报错汇总及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • 知识蒸馏联邦学习的个性化技术综述

    知识蒸馏联邦学习的个性化技术综述

    这篇文章主要为大家介绍了知识蒸馏联邦学习的个性化技术综述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Mac安装软件时提示已损坏的完美解决方法

    Mac安装软件时提示已损坏的完美解决方法

    从网上下载的SecureCRT、Principle等设计软件,以及输入法等常用软件,安装时可能会提示“已损坏,移至废纸篓”这类信息,根本无法打开,这篇文章主要介绍了Mac安装软件时提示已损坏的解决方法,需要的朋友可以参考下
    2022-07-07

最新评论