我想显示一个单选按钮,提交其值,但根据具体情况,让它不可编辑.禁用不起作用,因为它没有提交值(或者是吗?),它会使单选按钮变灰.只读是我正在寻找的,但由于一些神秘的原因,它不起作用.
是否有一些奇怪的技巧我需要拉动以使只读按预期工作?我应该用JavaScript代替吗?
顺便说一下,有没有人知道为什么只读在单选按钮中不起作用,而它在其他输入标签中有效?这是HTML规范中难以理解的遗漏之一吗?
我有一个select表单字段,我想标记为"只读",因为在用户无法修改值,但值仍然与表单一起提交.使用该disabled属性可防止用户更改值,但不会使用表单提交值.
该readonly属性仅适用于input和textarea字段,但这基本上就是我想要的.有没有办法让它工作?
我正在考虑的两种可能性包括:
select,禁用所有options并使用CSS灰显选择,使其看起来像禁用.再次编辑:
当然这是标准的东西?我不能重新发明轮子?? !! 用户填写表单并向他显示(使用PHP,但这不重要).你把它作为确认显示给他,所以他不应该再次尝试改变它......
请参阅相关问题,如何将表单列表框显示为只读或禁用所选索引? 它的要点是我想执行一项非常常见的任务......
有两种形式 - HTML中的提交表单和PHP中的处理和确认表单.
第一种形式在许多控件中提供选择,第二种形式在输入中进行验证,如果有效,则再次使用确认消息显示输入表单.在第二个表单中,所有字段必须是静态的.
从我所看到的,一些表单控件可以是,readonly而且一切都可以disabled,不同之处在于您仍然可以选择只读字段.
无论如何,不是按字段进行此字段,而是将整个表单标记为只读/禁用/静态,以便用户不能更改任何控件?
编辑:感谢所有JS解决方案(我有+1),但我只能使用服务器端解决方案.对不起,我本来应该这么说.
[更新]七年后仍然得到答案;-)我最后做的是从PHP生成表单,并为每个字段写一个readonly或disabled属性(适合控件的类型),设置为根据全局变量的真或假.
我有一个表单,我必须将表单值发布到我的动作类.在这种形式中,我有一个需要只读的复选框.我尝试过设置,disabled="true"但在发布到动作类时不起作用.
所以请指教?
我正在使用MVC 3和Razor
目前我正在使用
@model MyProject.ViewModels.MyViewModel
@foreach (var item in Model.MyProperty)
{
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.AdvSlotId }) |
@Html.ActionLink("Details", "Details", new { id = item.AdvSlotId }) |
@Html.ActionLink("Delete", "Delete", new { id = item.AdvSlotId })
</td>
<td>
@item.AdvSlotId
</td>
<td>
@item.Name
</td>
<td>
@item.Description
</td>
<td>
@Html.CheckBox(item.IsPublished, new { @disabled = "disabled" })
</td>
<td>
@item.Notes
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
查看模型:
namespace MyProject.ViewModels
{
public class MyViewModel
{
public MyViewModel(List<AdvSlot> advSlots)
{
MyProperty= advSlots;
}
public List<AdvSlot> …Run Code Online (Sandbox Code Playgroud) 我可以在复选框中使用ng-readonly指令吗?
即使用ng-readonly修饰后,该复选框也是可写的.
HTML:
<input type="checkbox" ng-model="model" ng-readonly="test" /> {{model}}
Run Code Online (Sandbox Code Playgroud)
控制器:
myApp.controller('MyCtrl', function($scope) {
$scope.test = true;
});
Run Code Online (Sandbox Code Playgroud)
添加小提琴
我有一个复选框,可以从其他选项中更新,但向用户显示已检查状态非常重要.但是我也希望它只能在功能中读取并在显示中表示.
它通过 禁用复选框(给出灰色框以在视觉上帮助用户)工作正常但是这意味着在提交时不会保存该值.
相反,如果我将复选框设置为只读,则禁用复选框,但仍然显示为普通复选框.
我有点想从每个,一个复选框提交它的值,但看起来像一个禁用的复选框,仍然显示其检查状态...有没有人有任何想法?
JS/jQuery的:
$('input[type=checkbox]').click(function(){
// Does not fire if I click a <input type="checkbox" disabled="disabled" />
});
Run Code Online (Sandbox Code Playgroud)
当有人点击禁用的复选框时,如何在jQuery中发生一些事情?
我正在处理Spring MVC应用程序,我遇到了一个问题,即在禁用时获取复选框的值.
在report.jsp页面中:
<form:checkbox type="checkbox" path="corporateColumn" id="corporateColumn" value="true" checked="checked" disabled="true" />
Run Code Online (Sandbox Code Playgroud)
在ReportForm.java中:
boolean corporateColumn ;
public boolean isCorporateColumn() {
return corporateColumn;
}
public void setCorporateColumn(boolean corporateColumn) {
this.corporateColumn = corporateColumn;
}
Run Code Online (Sandbox Code Playgroud)
在ReportController.java中;
boolean corporateColumn = reportDTO.isCorporateColumn(); // this evaluates to false
//Which expected as true when corporateColumn checkbox is checked
Run Code Online (Sandbox Code Playgroud)
除非对于复选框字段使用disabled ="true"(/ disabled ="$ {'true'}"),否则一切正常.
我在获取禁用文本字段的值时也遇到了类似的问题,并通过只读字段来克服它.所以我不确定Spring MVC在禁用时是否无法获取输入字段的值.
任何指导都会非常感激.
谢谢!
在HTML中,只有文本框,文本区域,密码框等文本控件具有只读属性.为什么他们不支持复选框/单选按钮?
我知道我可以通过使用onclick ="return false;"来使用脚本实现此功能.(我不想要任何解决方法,我只想知道不提供本机支持的原因来实现这一点)
但我的问题是,即使它接受来自用户的输入,也有任何特定原因不支持只读复选框/单选按钮.
编辑1: 我发现了这个,但它没有回答我的问题 - 为什么没有本地方法来限制用户在不禁用它的情况下更改状态?
我有以下 SCSS 代码:
input[type="checkbox"] {
...
&:read-only, &[readonly] {
cursor: default;
filter: grayscale(1);
}
}
Run Code Online (Sandbox Code Playgroud)
这正被应用到
<input type="checkbox" id="checkbox" onChange={this.rememberMe} />
以下MDN: :只读文档:
它将选择用户无法编辑的任何元素。
该问题同时适用于 Firefox 和 Chrome。
我们有几个 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)
这似乎是一个常见问题,但是在我所有的研究中,我还没有找到一个好的客户端解决方案。
复选框上的只读并不总是适用于所有浏览器:
在 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 ×7
checkbox ×4
css ×3
javascript ×3
jquery ×3
asp.net-mvc ×2
readonly ×2
angularjs ×1
forms ×1
html-select ×1
java ×1
jsp ×1
jsx ×1
radio-button ×1
razor ×1
reactjs ×1
sass ×1
spring-mvc ×1