html表单的复选框的值,关于表单:HTML复选框的checked属性的正确值是什么?

我们都知道如何在HTML中形成一个复选框输入:

我不知道 - 复选复选框的技术正确值是什么? 我看到这些都有效:

答案是无关紧要的吗? 我没有看到证据证明答案在规范中标记为正确:

Checkboxes (and radio buttons) are on/off switches that may be toggled

by the user. A switch is"on" when the control element's checked

attribute is set. When a form is submitted, only"on" checkbox

controls can become successful. Several checkboxes in a form may share

the same control name. Thus, for example, checkboxes allow users to

select several values for the same property. The INPUT element is used

to create a checkbox control.

规范作者会说什么是正确答案? 请提供基于证据的答案。

在您的问题摘要中,您提到了checked属性的值,但在问题描述中,您将讨论选中复选框的正确值。 复选框的"值"与checked属性不同,我相信你的问题描述你也意味着属性的值,也许你想调整问题描述。 对于复选框的"价值",请访问stackoverflow.com/questions/14323899/

严格来说,你应该把一些有意义的东西 - 根据这里的规范,最正确的版本是:

对于HTML,您还可以使用空属性语法checked="",甚至只需checked(对于更严格的XHTML,不支持此操作)。

但实际上,大多数浏览器都会支持引号之间的任何值。将检查以下所有内容:

只有以下内容将被取消选中:

另请参阅disabled="disabled"上的类似问题。

这是错的。如果查看规范,它会显示:checked (checked)表示"已检查的属性可以将值'检查'"。只有checked是可接受的值,其他都不是。布尔属性允许您省略所有内容除了值checked是可以接受的以及checked="checked"。

面向HTML5的W3页面表示checked,checked=""和checked="checked"都可以。 w3.org/TR/html-markup/input.checkbox.html

@Quentin我不愿意包括那部分内容,只是因为我很难在规范中提到什么,从语法上来说,括号意味着什么。如果在某个地方有提及,我很乐意更新答案。

@Hannele - w3.org/TR/html4/intro/sgmltut.html#h-3.3.4

@Quentin那么要迂腐,根据那个规范,只写checked并不是错误的 - 它是HTML的最小化形式。

@Hannele - 我说"布尔属性允许你省略除值之外的所有内容"。 =""或"checked"以外的任何其他值都是错误的。

@Quentin我道歉,那句话对我来说没有意义。你的意思是你可以省略除属性名称以外的所有内容吗?因为如果你可以省略除了值之外的所有内容,你可以简单地编写"checked",而不使用属性名称,并让它正常工作。

如果您编写"checked",那么您正在编写该值加上一对双引号。你必须只写checked,但它的值不是名称。从HTML的角度来看,这是一种奇怪的方式。我怀疑SGML允许您编写DTD,您可以在其中定义类似的属性,然后编写或而不是或。

@Quentin tl,dr:它是语义,但是空属性语法只指定属性的名称,而不是值。

怎么检查="蓝色"是对的? stackoverflow.com/a/24588369/563766的文档说不是。

@peteroak我的意思是,虽然它不完全正确,但这实际上适用于大多数浏览器。

如果复选框保持选中状态(重新加载页面时),尽管省略了布尔/空属性checked,请使用autocomplete ="off"来防止浏览器自动检查它。

HTML5规范:

http://www.w3.org/TR/html5/forms.html#attr-input-checked:

The disabled content attribute is a boolean attribute.

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes:

The presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.

If the attribute is present, its value must either be the empty string or a value that is an ASCII case-insensitive match for the attribute's canonical name, with no leading or trailing whitespace.

结论:

以下是有效,等效和真实的:

以下是无效的:

缺少该属性是false的唯一有效语法:

建议

如果您关心编写有效的XHTML,请使用checked="checked",因为是无效的XHTML(但是有效的HTML),而其他替代方案的可读性较差。否则,只需使用,因为它更短。

我决定回滚编辑2并保持规格第一。虽然示例首先是一般的方法,但我认为这是这个答案的区别方面,就目前的最佳例子而言。还是)感谢你的建议 :-)

我认为这是正确的答案,强调缺席意味着错误。 虽然="true"有效,但这意味着="false"可以按预期工作,但事实并非如此。

这些同样有效。在JavaScript中:

input.checked = true;

input.setAttribute("checked");

input.setAttribute("checked","checked");

setAttribute修改DOM标记,不需要属性赋值。

input.setAttribute("checked") TypeError:无法在'Element'上执行'setAttribute':需要2个参数,但只有1个存在

@IvanRave有些浏览器对此很迂腐,其他浏览器也能正常工作。

你想要这个我想:

checked='checked'

检查

检查="

检查="选中"

是等价的;

根据规格复选框

"----? checked ="checked"或"(空字符串)或为空

指定元素表示选定的控件.---'

我认为这可能会有所帮助:

首先阅读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');

这是一个非常疯狂的城镇,唯一的方法是检查错误是省略任何值。使用Angular 1.x,您可以这样做:

如果你需要不加以控制,那就更加理智了。

好吧,使用它我不认为重要(类似于禁用和只读),个人我使用checked ="checked"但如果你试图用JavaScript操纵它们,你使用true / false

不。它确实很重要(对于disabled和readonly也很重要)即使浏览器错误恢复非常好。如果你想用JS操作属性,那么你仍然应该使用checked或removeAttribute('checked')。 checked属性采用true或false。

谢谢你的纠正,三年后:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值