我们都知道如何在HTML中形成一个复选框输入:
我不知道 - 复选复选框的技术正确值是什么? 我看到这些都有效:
答案是无关紧要的吗? 我看到的答案,没有证据标记为正确这里从规范本身:
复选框(和单选按钮)是可由用户切换的开/关开关。 当设置了控制元素的checked属性时,开关处于“打开”状态。 提交表单时,只有“on”复选框控件才能成功。 表单中的多个复选框可以共享相同的控件名称。 因此,例如,复选框允许用户为同一属性选择多个值。 INPUT元素用于创建复选框控件。
规范作者会说什么是正确答案? 请提供基于证据的答案。
#1楼
检查
检查=“”
检查=“选中”
是等价的;
根据spec 复选框 '----ⓘchecked =“checked”或“”(空字符串)或空指定元素表示选定的控件.---'
#2楼
HTML5规范 :
disabled content属性是布尔属性。
元素上存在布尔属性表示真值,缺少属性表示false值。
如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导或尾随空格。
结论 :
以下是有效,等效和真实的 :
以下是无效的 :
缺少该属性是false的唯一有效语法:
建议
如果您关心编写有效的XHTML,请使用checked="checked" ,因为是无效的XHTML(但是有效的HTML),而其他替代方案的可读性较差。 否则,只需使用因为它更短。
#3楼
这是一个非常疯狂的城镇,唯一的方法是检查错误是省略任何值。 使用Angular 1.x,您可以这样做:
如果你需要不加以控制,那就更加理智了。
#4楼
我认为这可能会有所帮助:
首先阅读Microsoft和W3.org的所有规范。
您会看到设置复选框的实际元素需要在ELEMENT PROPERTY上完成,而不是UI或属性。
$('mycheckbox')[0].checked
其次,你需要知道checked属性RETURNS一个字符串“true”,“false”
为什么这很重要? 因为您需要使用正确的类型。 字符串,不是布尔值。 解析复选框时这也很重要。
$('mycheckbox')[0].checked = "true"
if($('mycheckbox')[0].checked === "true"){ //do something }
您还需要意识到“已检查”ATTRIBUTE最初用于设置复选框的值。 一旦元素呈现给DOM,这不会做太多。 在网页加载并最初解析时,将其设置为有效。
我将使用IE的首选项:
最后,复选框混淆的主要方面是复选框UI元素与元素的属性值不同。 它们不直接相关。 如果你在.net中工作,你会发现用户“检查”一个复选框永远不会反映传递给控制器的实际bool值。 要设置UI,我同时使用$('mycheckbox').val(true); 和$('mycheckbox').attr('checked', 'checked');
简而言之,对于选中的复选框,您需要:
初始DOM:
元素属性:
$('mycheckbox')[0].checked = "true";
UI:
$('mycheckbox').val(true); 和
$('mycheckbox').attr('checked', 'checked');
#5楼
你想要这个我认为: checked='checked'