【发布时间】:2017-03-01 06:25:27
【问题描述】:
我们有几个 MVC 复选框,例如:
@Html.CheckBoxFor(model => model.hasData, …)
我们有条件客户端代码需要将 div 中的所有控件设置为只读(包括这些复选框):
if (someCondition) {
$('#' + divIdToDisable + ' input').attr('readonly', 'true');
}
我们了解到 readonly 不能在复选框上正常工作(见下文)。
我尝试了以下方法,但这会导致在“保存”期间没有数据回传(另见下文):
$('#' + divIdToDisable + ' input').attr('disabled', 'true');
这似乎是一个常见问题,但在我的所有研究中,我都没有找到一个好的客户端解决方案。
这是我的研究:
只读复选框并不总是适用于所有浏览器:
Can HTML checkboxes be set to readonly?
How can I make a checkbox readonly? not disabled?
对 MVC 使用“禁用”会导致没有值被回发:
Html.CheckBox returns false if disabled, even if seleced
http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/
可以在剃须刀代码中实现条件“禁用”:
MVC 3: Conditionally Adding the Disabled Attribute with the HtmlHelpers
但是,这些不是客户端解决方案。
【问题讨论】:
-
你为什么要使用这个客户端?为什么不是服务器端?
-
复选框并非按照您想要的方式工作。您是否可以使用单选按钮?
-
@Arendsen:有很多现有代码需要更改
-
@MisterPositive:这可能是一个可行的解决方案。但是单选框在 MVC 的“禁用”问题上不相似吗?
标签: jquery html asp.net-mvc checkbox readonly