输入复选框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】:

只有checkedchecked="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或选中或是[重复]的主要内容,如果未能解决你的问题,请参考以下文章

向数据库发送 true 或 false 复选框是不是选中

如何使用角度7中json的真假值来选中和取消选中复选框[重复]

Rails:form_for 复选框设置为 true 或 false 是不是选中/取消选中该框

无法在 chrome 上的移动视图中取消选中复选框输入 [重复]

如何使用复选框在 mySQL 中输入 true (1) 或 false (0) 并显示为在 php / html 表单中选中?

easyui datagrid 怎么去除单击行选中事件