Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入复选框true或checked或yes_Javascript_Html_Checkbox_Html Input - Fatal编程技术网

Javascript 输入复选框true或checked或yes

Javascript 输入复选框true或checked或yes,javascript,html,checkbox,html-input,Javascript,Html,Checkbox,Html Input,我已经看到了预选复选框的三种实现。我开始使用checked=“checked”是因为我认为这是“正确”的方式(但从来没有像“checked”=“yes”这样)。我正在考虑更改为checked=“true”,因为它看起来更可读,更容易编写JavaScript。请注意,这个问题同样适用于其他属性,例如“disabled”=“disabled”与“disabled”=“true”。只要我保持一致,使用“真实”是首选方法吗?多谢各位 <input type="checkbox" checked="

我已经看到了预选复选框的三种实现。我开始使用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" />

只有
选中的
checked=“checked”
是有效的。其他选项取决于浏览器中的错误恢复

checked=“yes”
checked=“true”
特别糟糕,因为它们意味着
checked=“no”
checked=“false”
将默认状态设置为未选中……而它们不会这样做。

相应地,选中输入的属性可以不存在/不存在或将“checked”作为其值。这不会使其他值无效,因为浏览器实现没有允许“true”、“on”、“yes”等值的限制。要确保您将编写一个跨浏览器复选框/单选框,请按照的建议使用checked=“checked”

禁用、只读和ismap输入的属性以相同的方式进行

已编辑


正如@Quentin

所警告的,对于checked、disabled、readonly和ismap input的属性,empty不是有效的值。很抱歉,我想在这里添加它。。。那么$('input[name=foo]').attr('checked',true);?它真的应该是$('input[name=foo]').attr('checked','checked')?它应该是
jQuery(selector).prop('checked',true)
attr
在处理选中属性的方式上不一致,因此为了维护人员的大脑,应该避免使用)。实际上,
checked=“checked”
看起来同样糟糕,因为它可能暗示
checked=“not checked”
,或者equality的某些派生词意味着未选中。实际上,这是一个set/notset问题。那么$('input[name=foo]').attr('checked',true);?它真的应该是$('input[name=foo]')。attr('checked','checked')?否。它表示可以省略checked属性,或者可以将值设置为'checked'。这确实会使其他所有值无效(HTML只允许您使用允许的内容,不允许您使用非禁止的内容)。因为它是一个布尔属性,所以当属性存在时,可以省略除值之外的所有内容。i、 e.给定
checked=“checked”
您可以提交前9个字符和最后一个字符)。我说这不会使其他值无效,因为浏览器可以实现他们想要的解析html的方式,因为他们接受W3C推荐的ommited/note checked属性或checked=“checked”。我接受否定“casue”empty不是有效值,但其他所有内容仍然适用。