在HTML中,只有文本框,文本区域,密码框等文本控件具有只读属性。为什么他们不支持复选框/单选按钮?
我知道我可以通过使用onclick =“return false;”来使用脚本实现此功能。 (我不想要任何解决方法,我只想知道不提供原生支持的原因来实现这一目标)
但我的问题是,即使它接受来自用户的输入,也没有任何特定的理由不支持复选框/单选按钮中的只读。
编辑1: 我找到了this,但它没有回答我的问题 - 为什么没有本地方法限制用户在不禁用状态的情况下更改状态?
答案 0 :(得分:2)
重要的是要理解,READONLY只会阻止用户 从改变领域的价值,而不是从与...的互动 领域。对于许多类型的领域,READONLY是无关紧要的,因为你 通常不会改变价值。例如,在复选框中,您可以 检查它们是否开启(因此设置CHECKED状态)但你没有 更改字段的值。但是,禁用实际上会阻止 你来自使用该领域。
请注意,在这些示例中,您可以设置复选框 它们是“只读”:
答案 1 :(得分:2)
readonly
通常input
没有类型限制。但是,似乎它通常没有在浏览器中实现,可能是因为实现者并没有太多需要它。在HTML5 CR中,readonly
input type=checkbox
明确disallowed,HTML5 CR(或其他一些“HTML5规范”,例如HTML 5.1 Nightly或WHATWG Living HTML)通常是实现者使用的这几天的指导方针。
有人建议在HTML5中允许它,例如2011年5月a discussion在whatwg列表中,以及浏览器错误报告(根据HTML5的说法拒绝),但显然没有足够好的用例。虽然存在真实的用例,但它们可能过于边缘化,并且可以提供合理的替代方案,例如使用合适的关联文本使用复选框图像(根据需要选中或取消选中),如果伪复选框设置为选中,带有所需信息的隐藏字段。
答案 2 :(得分:1)
使用jquery使其禁用(只读)或启用。只有文本字段才能使它们在渲染时可读。
<input type="checkbox" id="chk1"/>
然后使用Jquery
$(document).ready(function(){
$("#chk1").prop('disabled',true);
});
答案 3 :(得分:0)
首先,您不应该与复选框的onclick
事件相交,仅仅是为了检查它是否被选中。您应该使用onchange
事件。为什么?因为onclick
事件在onchange
事件之前触发,所以如果你与onclick
事件相交,你将无法获得复选框的实际状态,除非你做了一些丑陋的javascript杂技setTimeout
如果要将复选框设置为“只读”,则必须使用disabled
属性。如下......
<input type="checkbox" disabled/>
要回答您的问题,我认为HTML Specs in W3.Org
可以更好地解释禁用和只读之间的区别在于只读控件仍然是可聚焦的,因此用户仍然可以选择文本并与之交互,而禁用的控件完全是非交互式的。 (因此,只能将文本控件设置为只读:对于实例,对于复选框或按钮没有意义。)