如何将<form:input/>表单字段设置为只读状态
form:input 标签设置只读效果的解决方案
方案1:直接透传HTML原生readonly属性
Spring MVC的<form:input>标签支持直接传递原生HTML属性,直接在标签内声明readonly="true"即可生效,写法示例:
<form:input path="字段名" readonly="true" />
如果需要动态控制只读状态,可以结合EL表达式使用:
<form:input path="字段名" readonly="${是否只读的判断条件}" />
方案2:通过焦点事件模拟只读效果
如果第一种方案在你的Spring版本中不兼容,可以用聚焦自动失焦的方式实现完全一致的只读效果,且表单提交时字段值会正常被传递:
<form:input path="字段名" onfocus="this.blur()" />
方案3:页面加载后通过JS动态添加只读属性
<form:input>渲染后会转换成普通的<input>标签,你可以在页面加载完成后通过JS给对应元素加只读属性,适合批量处理或者运行时动态切换只读状态的场景:
- 原生JS写法:
document.querySelector('input[name="对应path的字段名"]').setAttribute('readonly', 'readonly') - jQuery写法:
$('input[name="对应path的字段名"]').attr('readonly', true)
注意:不要使用
disabled属性实现只读,disabled属性会导致字段值在表单提交时不会被后端接收,和readonly的逻辑有本质区别。
内容的提问来源于stack exchange,提问作者lakshman Kommula
相关产品推荐
相关产品推荐

