Input只读属性如何设置,怎么解除只读属性

设置或解除input元素的只读属性,核心是操作HTML的readonly属性或DOM的readOnly属性,常用方法包括原生JavaScript直接赋值和jQuery的prop方法,具体选择取决于技术栈和对浏览器兼容性的要求。

input只读属性怎么解除?直接操作DOM属性

解除input只读属性最直接的方式是操作DOM属性,在HTML中,readonly属性是一个布尔属性,只要存在即表示只读,在JavaScript中,对应的DOM属性是readOnly,需要区分大小写。

5.input读写属性
加载中
5.input读写属性

使用JavaScript设置只读属性

设置input只读时,可以直接给DOM元素添加readonly属性,原生JS有两种常见写法:

  • 设置readOnly属性为true:element.readOnly = true
  • 设置readonly属性值(任意值):element.setAttribute('readonly', 'readonly')

第一种写法更推荐,因为直接操作DOM属性性能更好,且符合布尔属性的语义,第二种写法适合需要与HTML标记保持一致的情况。

使用JavaScript解除只读属性

解除只读同样有两种方式:

  • 将readOnly属性设为false:element.readOnly = false
  • 移除readonly属性:element.removeAttribute('readonly')

两种方式效果相同,但removeAttribute会彻底移除属性,而readOnly = false只是将属性值设为假,但属性本身可能仍然存在(若之前通过setAttribute添加)。多数情况下,使用readOnly = false更简洁,且不会遗留空属性。

常见误区:readonly与disabled的区别

很多开发者容易混淆只读与禁用,两者在表现和数据提交上有本质区别:

  • readonly不可编辑,但可以聚焦、选中、复制,且表单提交时仍会发送该字段的值。
  • disabled:元素完全不可交互,包括聚焦、选中、点击,且表单提交时不会发送该字段的值。

行业共识认为,如果你需要用户看到字段但不可修改,同时希望数据提交,应使用readonly;如果你希望字段完全不可用且不提交数据,则使用disabled,在解除只读属性时,注意不要误操作成禁用属性。

设置input只读属性的js方法:jQuery的prop与attr

在jQuery项目中,控制只读属性通常使用prop方法,偶尔也会用到attr,两者的行为差异需要特别注意。

prop方法设置与解除只读属性

jQuery的prop方法专门用于操作DOM属性,对布尔属性有良好支持:

  • 设置只读:$('#input').prop('readonly', true)
  • 解除只读:$('#input').prop('readonly', false)

prop方法直接操作DOM的readOnly属性,兼容所有现代浏览器,且语义清晰,业内专家指出,在jQuery 1.6+版本中,prop是处理checked、disabled、readonly等布尔属性的标准方式。

attr方法的正确用法与局限

attr方法操作的是HTML属性,而不是DOM属性,使用时需注意:

  • 设置只读:$('#input').attr('readonly', 'readonly')
  • 解除只读:$('#input').removeAttr('readonly')

attr方法在早期jQuery版本中常用,但存在一些边缘情况,如果readonly属性初始不存在,用attr设置后再用prop解除可能不彻底。实际开发中,建议优先使用prop,仅在需要保持HTML标记一致时使用attr。

对比两种方法:

场景 prop方法 attr方法
设置只读 prop('readonly', true) attr('readonly', 'readonly')
解除只读 prop('readonly', false) removeAttr('readonly')
适用版本 jQuery 1.6+ 推荐 所有版本,但1.6+后不推荐用于布尔属性
性能 稍快(直接操作DOM属性) 稍慢(需解析属性字符串)

input框只读属性取消的常见场景及操作

在实际项目中,需要动态设置或解除input只读属性的场景相当普遍,以下列举几个典型场景及具体操作。

表单提交时动态控制只读

在数据提交前,有时需要将某些字段临时设为只读,防止用户修改关键信息,例如在订单确认页面,用户确认后所有输入框变为只读。

操作步骤:

  1. 获取表单中所有需要设置的input元素
  2. 遍历每次元素,设置readOnly为true
  3. 提交后如需修改,再解除只读
// 设置所有input为只读
document.querySelectorAll('#orderForm input').forEach(function(el) {
  el.readOnly = true
})
// 解除只读
document.querySelectorAll('#orderForm input').forEach(function(el) {
  el.readOnly = false
})

根据用户权限设置只读

在管理系统或协作平台中,不同用户角色对字段的编辑权限不同,只读属性常用于实现权限控制。

具体实现:

  • 管理员:所有字段可编辑(不设置只读)
  • 普通用户:部分字段只读(如审核状态、创建时间等)
var userRole = '普通用户'
if (userRole === '普通用户') {
  document.getElementById('statusInput').readOnly = true
  document.getElementById('timeInput').readOnly = true
}

批量操作多表单元素的只读属性

当页面存在多个input,且需要统一设置或解除只读时,可以借助类名或数据属性来精准选择。

推荐做法:

  • 给需要动态控制只读的input添加类名,如data-editable
  • 通过类名或属性选择器批量操作
// 批量设置只读
var inputs = document.querySelectorAll('input[data-editable]')
for (var i = 0; i < inputs.length; i++) {
  inputs[i].readOnly = true
}
// 批量解除只读
for (var j = 0; j < inputs.length; j++) {
  inputs[j].readOnly = false
}

Q&A:input只读属性设置与解除常见问题

input只读属性怎么解除?

解除input只读属性,原生JS将readOnly属性设为false,或使用removeAttribute('readonly'),jQuery中调用prop('readonly', false),如果使用attr方法设置过,则需要用removeAttr('readonly'),建议优先使用DOM属性操作,兼容性更好。

设置input只读属性后表单字段还能提交吗?

能,只读字段仍然会随表单提交,数据会被发送到服务器,这是readonly与disabled的核心区别之一,如果你希望字段不提交数据,应使用disabled属性而不是readonly。

readonly属性与disabled属性在数据提交上有何不同?

readonly字段提交数据,disabled字段不提交数据,readonly字段可聚焦、可选中、可复制,disabled字段完全不可交互,禁用属性会触发浏览器默认样式(灰色文字),而只读属性通常无特殊样式,需要开发者自行添加CSS区分。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/input%e5%8f%aa%e8%af%bb%e5%b1%9e%e6%80%a7%e5%a6%82%e4%bd%95%e8%ae%be%e7%bd%ae%ef%bc%8c%e6%80%8e%e4%b9%88%e8%a7%a3%e9%99%a4%e5%8f%aa%e8%af%bb%e5%b1%9e%e6%80%a7/

赞 (0)
上一篇 2026年8月9日 16:01
下一篇 2026年8月9日 16:06

相关推荐

  • 私有云和公有云怎么选?云服务器私有云公有云区别

    服务器选择私有云还是公有云,核心取决于企业的数据敏感度、预算结构及运维能力;若追求极致安全与合规,私有云是首选,若看重弹性扩展与成本效益,公有云更具优势,在2026年的数字化浪潮中,企业IT架构的选型早已不是简单的“买服务器”问题,而是关乎业务连续性与成本控制的战略决策,很多技术负责人在面临抉择时,往往陷入两难……

    2026年7月8日
    10700
  • AI大模型绘本怎么做?AI生成绘本教程

    AI大模型绘本通过自然语言处理与图像生成技术的深度融合,实现了从“文字描述”到“视觉故事”的秒级转化,大幅降低了儿童内容创作门槛,成为2026年家庭亲子阅读与教育科技领域的核心增长点,过去,制作一本绘本需要编剧、插画师、排版设计师紧密协作,周期长达数月且成本高昂,借助先进的人工智能大模型,家长或教育工作者只需输……

    2026年6月13日
    2700
  • IDC报价和资源配置的注意事项有哪些?,怎么收费?

    IDC报价的核心是资源配置,带宽、机柜、电力与IP地址四项直接影响总成本,合理配置能显著降低费用, 很多企业初次接触IDC服务时,容易被纷繁的报价单搞晕,其实只要抓住资源配置这个关键,就能看懂价格背后的逻辑,IDC报价怎么算?核心因素全解析IDC报价不是单一数字,而是由多个资源项组合而成,了解每一项的计算方式……

    2026年8月6日
    1000
  • 服务器参数怎么配置?服务器配置参数详解

    服务器参数配置的核心在于根据业务负载精准匹配CPU、内存与带宽资源,并通过内核优化与监控体系实现性能与成本的最佳平衡,而非盲目追求最高硬件规格,很多站长或运维新手在搭建网站或部署应用时,常陷入一个误区:认为服务器配置越高越好,不当的高配不仅造成资源浪费,还可能因参数默认值不合理导致系统不稳定,服务器参数配置并非……

    2026年7月7日
    13900
  • Windows服务器环境包怎么安装,镜像包哪里下载?

    对于Windows服务器环境部署,选择集成环境包还是官方系统镜像,关键取决于你的具体场景——如果追求快速搭建和低维护成本,集成环境包更合适;如果需要完全控制和高性能定制,官方镜像加手动配置才是正解,这个问题没有标准答案,但几乎每个接触Windows服务器的人都会纠结,下面我从实际使用经验出发,把选择、安装、部署……

    2026年8月20日
    1000
  • i9服务器租用计费怎么算?,多少钱一个月

    i9服务器租用费用主要由处理器核心数、内存容量、带宽大小和租用时长决定,以典型配置(8核16线程、32GB内存、10M带宽)为例,月付费用大致在800元至1500元之间,年付可降至约七折,具体计费样例需结合服务商和地域差异,i9服务器租用计费方式详解按需计费与包年包月按需计费:按小时或天扣费,适合短期测试或临时……

    2026年8月20日
    600
  • FTP服务器地址怎么修改?,FTP服务器IP地址如何更改?

    FTP 服务器地址修改指南修改 FTP 服务器地址通常分为三个层面:服务器系统层级(修改 IP/域名)、FTP 服务软件配置层级(修改被动模式地址)以及客户端连接层级(修改访问地址),请根据您的实际需求选择对应的操作方案,修改服务器的 IP 或域名(系统层级)如果您更换了服务器的物理 IP 或绑定了新的域名,首……

    2026年7月13日
    15200
  • IIS映射_安装IIS

    我们直接进入正文,IIS映射是控制网站请求处理路径的核心机制,安装IIS通过在Windows Server的服务器管理器或Windows系统的“启用或关闭Windows功能”中添加Web服务器角色即可完成,IIS映射怎么配置?从原理到操作什么是IIS映射IIS映射(Handler Mapping)将特定URL请……

    2026年8月21日
    400
  • IIS服务器伪静态如何设置,ECS第三方软件技术支持有哪些

    ECS云服务器上配置IIS伪静态,核心是通过安装URL Rewrite模块或第三方ISAPI重写组件,实现动态URL的静态化改写,提升SEO友好性与访问效率,阿里云ECS IIS伪静态配置步骤详解在阿里云ECS的Windows Server环境下,IIS伪静态设置主要依赖两大工具:原生URL Rewrite和第……

    2026年8月21日
    900
  • interbase数据库修复_修复账本数据库

    InterBase数据库修复的核心答案是:账本数据库损坏时,优先使用官方gbak备份恢复流程和结构校验工具,绝大多数逻辑损坏不需要第三方软件就能解决,我的数据库曾经在断电后彻底打不开,报错信息一堆乱码,后来发现是索引页错位,这里把我的实战经验和行业共识整理出来,供你参考,InterBase数据库修复的常见损坏场……

    2026年8月21日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注