小编Run*_*ors的帖子

在客户端将 MVC 复选框设置为只读(或禁用)

我们有几个 MVC 复选框,例如:

@Html.CheckBoxFor(model => model.hasData, …)
Run Code Online (Sandbox Code Playgroud)

我们有条件客户端代码,需要将 div 中的所有控件设置为只读(包括这些复选框):

if (someCondition) {
    $('#' + divIdToDisable + ' input').attr('readonly', 'true');
}
Run Code Online (Sandbox Code Playgroud)

我们了解到 readonly 在复选框上不能正常工作(见下文)。

我尝试了以下操作,但这会导致在“保存”期间没有数据回传(另请参见下文):

 $('#' + divIdToDisable + ' input').attr('disabled', 'true');
Run Code Online (Sandbox Code Playgroud)

这似乎是一个常见问题,但是在我所有的研究中,我还没有找到一个好的客户端解决方案。


这是我的研究:

复选框上的只读并不总是适用于所有浏览器:

HTML 复选框可以设置为只读吗?

如何将复选框设为只读?没被禁用?

在 MVC 中使用 'disabled' 会导致没有值被回发:

如果禁用,Html.CheckBox 返回 false,即使已选择

http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/

可以在剃刀代码中实现条件“禁用” :

Asp .net mvc 3 CheckBoxFor 方法输出隐藏字段,当复选框被选中为 true 时,该隐藏字段值为 false

MVC 3:使用 HtmlHelpers 有条件地添加禁用属性

然而,这些不是客户端解决方案。

html checkbox asp.net-mvc jquery readonly

2
推荐指数
1
解决办法
5407
查看次数

标签 统计

asp.net-mvc ×1

checkbox ×1

html ×1

jquery ×1

readonly ×1