输入复选框true或选中或是[重复]
Posted
技术标签:
【中文标题】输入复选框true或选中或是[重复]【英文标题】:input checkbox true or checked or yes [duplicate] 【发布时间】:2012-06-05 15:41:12 【问题描述】:我已经看到了预选复选框的三种实现方式。我开始使用checked="checked" 因为我认为这是“正确”的方式(但是从来没有像“checked”="yes" 那样)。我正在考虑更改为 checked="true" 因为它看起来更具可读性并且更容易编写 javascript 代码。请注意,同样的问题适用于其他属性,例如“disabled”=“disabled”与“disabled”=“true”。只要我保持一致,使用“真实”是首选方法吗?谢谢
<input type="checkbox" checked="checked" value="123" name="howdy" />
<input type="checkbox" checked="true" value="123" name="howdy" />
<input type="checkbox" checked="yes" value="123" name="howdy" />
【问题讨论】:
$('input[name=foo]').attr('checked', true); 怎么样?真的应该是 $('input[name=foo]').attr('checked', 'checked') 吗? 【参考方案1】:只有checked
和checked="checked"
有效。您的其他选项取决于浏览器中的错误恢复。
checked="yes"
和checked="true"
特别糟糕,因为它们暗示checked="no"
和checked="false"
会将默认状态设置为未选中 ...它们不会。
【讨论】:
html 5 spec. 抱歉,本来是想在这里添加... $('input[name=foo]').attr('checked', true); 怎么样?真的应该是 $('input[name=foo]').attr('checked', 'checked') 吗? 应该是jQuery(selector).prop('checked', true);
(attr
处理检查属性的方式不一致,所以为了维护者的大脑应该避免)。
真的,checked="checked"
似乎同样糟糕,因为它可能暗示 checked="not-checked"
或同样的派生词暗示未经检查。确实这是一个设置/未设置的问题。【参考方案2】:
根据W3C,检查输入的属性可以不存在/省略或将“检查”作为其值。这不会使其他值无效,因为浏览器实现没有限制允许“true”、“on”、“yes”等值。按照W3C 的建议,为保证您将编写跨浏览器复选框/收音机,请使用checked="checked"。
disabled、readonly 和 ismap 输入的属性是一样的。
已编辑
如@Quentin 警告的那样,empty 不是checked、disabled、readonly 和ismap 输入属性的有效值
【讨论】:
没有。它说checked 属性可以被省略或者它的值可以是'checked'。这确实使其他所有值无效(HTML 只允许您使用允许的内容,它不允许您使用不被禁止的所有内容)。由于它是一个布尔属性,您可以在属性存在时省略所有除了值。即给定checked="checked"
,您可以提交前 9 个字符和最后一个字符)。
我说这不会使其他值无效,因为 浏览器 可以根据需要实现解析 html 的方式,因为它们接受省略/不存在的检查属性或检查 =已检查”,由 W3C 推荐。我接受否定,因为“空”不是有效值,但其他一切仍然适用。以上是关于输入复选框true或选中或是[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用角度7中json的真假值来选中和取消选中复选框[重复]
Rails:form_for 复选框设置为 true 或 false 是不是选中/取消选中该框
无法在 chrome 上的移动视图中取消选中复选框输入 [重复]
如何使用复选框在 mySQL 中输入 true (1) 或 false (0) 并显示为在 php / html 表单中选中?