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://test.idctop.com/article/558863.html

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

相关推荐

  • PagedAttention原理是什么?大模型显存优化技术详解

    PagedAttention的核心原理是将LLM的KV缓存像操作系统管理内存一样,划分为固定大小的物理块,通过页表进行非连续寻址,从而彻底消除内存碎片并显著提升GPU显存利用率,在2026年的今天,大语言模型(LLM)的应用场景早已从简单的对话问答扩展到了复杂的代码生成、长文档分析及实时多模态交互,随着模型参数……

    2026年6月22日
    2000
  • 升腾ai大模型专业怎么样?升腾ai大模型专业认证考试费用

    升腾AI大模型通过全栈自主可控的技术架构,为政企客户提供从底层算力到上层应用的一站式解决方案,是当前国产化替代与智能化转型的核心基础设施,为什么选择升腾AI大模型作为核心底座在数字化转型的深水区,企业不再仅仅关注“有没有”AI能力,而是更在意“稳不稳”和“安不安全”,国产算力替代的必然选择过去几年,全球AI芯片……

    2026年6月13日
    3610
  • RTX 4090D和RTX 4090跑大模型区别大吗?显卡怎么选

    RTX 4090D与RTX 4090在跑大模型时的核心区别在于显存容量与合规性,前者因24GB显存限制在超大参数模型推理时面临瓶颈,而后者虽性能更强但受出口管制影响,国内用户主要依赖4090D进行主流7B至70B参数模型的微调与推理,两者在常规应用场景下体验差异显著减小,RTX 4090和RTX 4090跑大模……

    2026年6月19日
    7000
  • 服务器客户端常用命令有哪些?Linux常用命令大全

    服务器与客户端的常用命令是运维和开发的基础,掌握Linux下的SSH连接、文件管理及进程监控,以及Windows下的Ping测试、Netstat端口查看和PowerShell脚本执行,能解决90%以上的日常连通性与状态排查问题,在日常的IT运维场景中,无论是管理远程云服务器还是调试本地开发环境,命令行工具都是最……

    2026年7月5日
    18210
  • IE10有哪些常用网站?,IE10浏览器兼容性设置方法

    对于IE10用户,常用的网站仍然是百度、淘宝、京东等主流平台,但部分网站可能已不再支持,需要开启兼容性视图或升级浏览器,IE10常用网站推荐:这些网站跑得稳虽然IE10已经属于“老古董”,但在某些企业内网或个人习惯中依然被使用,下面这份清单覆盖了日常访问频率最高的网站类型,基于实际测试,告诉你哪些能正常打开,哪……

    2026年8月12日
    900
  • idc机房到底是什么,删除按钮是什么意思?

    IDC机房是互联网数据中心的简称,为企业提供服务器托管、租用和云服务等基础设施支撑;而“删除”按钮在IDC管理系统中通常指释放或回收服务器资源,两者分别对应硬件基础与操作权限,是理解网络服务运维的关键,IDC机房是什么意思?——互联网数据中心基础概念用大白话讲清楚IDC机房IDC机房,全称互联网数据中心,你可以……

    2026年8月13日
    100
  • 分销主机是什么意思,怎么选最靠谱的服务商?

    分销主机就是把一台服务器的资源拆分成多个独立空间,让你能以批发价拿到资源再零售给其他用户,本质上是“资源的二房东”,你不需要自己买服务器,也不用操心机房和网络,上游供应商已经帮你打理好底层硬件,你只需要专注于获取客户、设定价格、提供技术支持——如果你愿意的话,这种模式在中小站长和初创公司里很常见,因为它极大降低……

    2026年7月25日
    900
  • 服务器大文件传输工具哪个好用,Linux服务器怎么传大文件?

    针对不同网络环境和安全需求,选择 Rsync 进行断点续传或使用 SFTP 进行加密传输是目前实现服务器大文件高效、稳定传输的核心方案,Linux服务器大文件传输怎么最快:协议与工具的选择在处理数百GB甚至TB级别的数据库备份或镜像文件时,传输效率直接影响到运维窗口的时间成本,业内专家指出,传输速度的瓶颈往往不……

    2026年7月13日
    1500
  • 什么是floorplan?floorplan和户型图有什么区别

    “Floorplan” 在中文里通常翻译为 平面图、户型图 或 楼层平面图,根据具体语境,它有以下几种常见含义和用法:建筑与房地产领域户型图:指住宅或商业空间的平面布局图,展示房间分布、门窗位置、墙体结构等,例句:Please send me the floorplan of the apartment.(请把……

    2026年7月10日
    18500
  • 服务器与客户端作用是什么?服务器和客户端的区别

    在计算机网络和互联网架构中,服务器(Server)与客户端(Client)是构成大多数网络应用(如 Web 浏览、即时通讯、在线游戏等)的两个核心角色,它们通过“请求-响应”模式协同工作,以下是两者的主要作用及区别:服务器(Server)的作用服务器是网络中为其他计算机(客户端)提供资源、服务或数据的计算机或程……

    2026年7月10日
    13200

发表回复

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