禁用属性的正确值是多少?


167

disabled文本框或文本区域的属性的正确值是多少?

我以前看过以下内容:

<input type="text" disabled />
<input type="text" disabled="disabled" />
<input type="text" disabled="true" />

5
属性必须具有一个值,即使对于仅存在信号就必须执行某些操作的属性也是如此。disabled="false"仍将禁用该元素,因为disabled触发该禁用的是PRESENCE而不是该属性的值。
Marc B

:我张贴,以js1568的回答确认/澄清什么@Marc B的说法评论链接whatwg.org/specs/web-apps/current-work/multipage/...
詹姆斯阿勒代斯

可能重复的stackoverflow.com/questions/1033944/…,因为两者都是布尔属性(未标记)
Ciro Santilli郝海东冠状病六四事件法轮功

Answers:


148
  • 对于XHTML,<input type="text" disabled="disabled" />是有效的标记。
  • 对于HTML5,<input type="text" disabled />W3C对其样本有效并使用了它们。
  • 实际上,两种方法都可以在所有主要浏览器上使用。

15
在html5中,输入是一个void元素,不需要自闭斜杠:w3.org/TR/html5/syntax.html#void-elementsw3.org/TR/html5/syntax.html#syntax-start-标签
丹尼尔(Daniel)

1
@DanielK。不需要它,除非执行多语言HTML / XML标记。
Patanjali

108

HTML5规范

http://www.w3.org/TR/html5/forms.html#enabling-and-disabling-form-controls:-the-disabled-attribute

选中的内容属性是布尔属性

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

元素上存在布尔属性表示真实值,而缺少属性则表示假值。

如果存在该属性,则其值必须为空字符串或该属性的规范名称的ASCII大小写不敏感匹配的值,且没有前导或尾随空格。

结论

以下是有效,等效和正确的内容

<input type="text" disabled />
<input type="text" disabled="" />
<input type="text" disabled="disabled" />
<input type="text" disabled="DiSaBlEd" />

以下是无效的

<input type="text" disabled="0" />
<input type="text" disabled="1" />
<input type="text" disabled="false" />
<input type="text" disabled="true" />

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

<input type="text" />

建议

如果您关心编写有效的XHTML,请使用disabled="disabled",因为它<input disabled>是无效的,并且其他替代方法不太可读。否则,请使用<input disabled>它,因为它更短。


3
注意:如果使用AngularJS,并且需要将禁用状态绑定到变量,则可以ng-disabled改用。与其他类似属性类似,它们通常具有智能的ng-*对应物
jakub.g,2016年

5
disabled={true}可以在reactJs JSX代码中使用,但是我敢肯定它将仅被转换为有效/允许的HTML5格式之一。
RBT

1

我只是尝试了所有这些,对于IE11,似乎唯一起作用的是disable =“ true”。禁用的值或没有给出的值均无效。实际上,jsp的错误要求所有字段都相等,因此我必须指定disable =“ true”才能起作用。


1
OP的问题是关于HTML(即客户端控件)的。您正在查看服务器端控件。那些有不同的约定。如果您检查JSP的HTML输出,您会注意到其中的区别。如果您还有疑问,试试这个小提琴的IE11。
Ruud Helderman

我已经在IE 11的客户端上看到了同样的事情。IE 11强制存在某些内容,因此仅将disabled设置为disabled =“”
Robert Achmann

1

在HTML5中,没有正确的值,所有主流浏览器并不真正关心该属性是什么,它们只是在检查该属性是否存在,因此该元素被禁用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.