问题描述
我想显示一个单选按钮,提交其值,但根据情况,不可编辑。禁用不起作用,因为它没有提交值 (或是否),并且会使单选按钮变灰。 Read-only 真的是我正在寻找的,但由于一些神秘的原因,它不起作用。
有没有一些奇怪的技巧,我需要拉 read-only 按预期工作?我应该用 JavaScript 代替吗?
顺便说一句,有没有人知道为什么 read-only 不能在单选按钮中工作,而它在其他输入标签中工作?这是 HTML 规范中的这些难以理解的遗漏之一吗?
最佳解决方案
如果有其他选项,单选按钮只需要是 read-only 。如果您没有任何其他选项,则无法取消选中选中的单选按钮。如果您有其他选项,则可以通过禁用其他选项来阻止用户更改值:
<input type="radio" name="foo" value="Y" checked>
<input type="radio" name="foo" value="N" disabled>
小提琴:http://jsfiddle.net/qqVGu/
次佳解决方案
我已经通过禁用只有 un-checked 单选按钮在单选按钮上伪造了伪造。它使用户不选择不同的值,并且检查的值将始终在提交时发布。
使用 jQuery 来做 readonly:
$(':radio:not(:checked)').attr('disabled', true);
这种方法也可以只读一个选择列表,除了你需要禁用每个 un-selected 选项。
第三种解决方案
这是你可以去的伎俩。
<input type="radio" name="name" onclick="this.checked = false;" />
第四种方案
我有一个冗长的表单 (250+字段) 发布到一个数据库。这是一个在线就业申请。当管理员查看已经提交的应用程序时,该表单将填充数据库中的数据。输入文本和文本区域被替换为它们提交的文本,但是收音机和复选框对于保留为表单元素是有用的。禁用它们使它们难以阅读。将.checked 属性设置为 false onclick 将无法正常工作,因为用户可能已填写该应用程序。无论如何…
onclick="return false;"
工作像’disabling’ 收音机和复选框的魅力 ipso facto 。
第五种方案
设置已检查或未检查状态 (来自客户端或服务器) 的最佳解决方案,并且不让用户在病房之后进行更改 (也就是使其只读),请执行以下操作:
<input type="radio" name="name" onclick="javascript: return false;" />
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。