为什么我们需要禁用="禁用"?

Nor*_*ais 33 html xhtml web

似乎普遍的共识是,对于不需要任何值的XHTML属性,我们应该重复属性名称.例如<input disabled>,正确的XHTML是<input disabled="disabled"/>.

但是,我们可以<input>使用以下任何一项来禁用HTML 元素:

  • <input disabled=" "/>

  • <input disabled=""/>

  • <input disabled="asdfg">

  • <input disabled="false">

实际上是否有正式规则可供使用disabled="disabled"?还是味道问题?

Spu*_*ley 42

官方正确的xhtml语法是disabled="disabled".

原因是xhtml是XML语法,XML要求属性具有值.xhtml规范还明确指定该值应"禁用".

选择这个值超过任何其他可能值的原因是相当随意的; 他们只是决定将所有以前的布尔属性转换为XML格式,方法是使它们的值与它们的名称相同.

所以是的,有一个官方规范说你必须使用完整的语法.但它只适用于xhtml文档.你可以在这里找到它(如果你disabled在那个页面中搜索,你会发现它被列为仅允许"disabled"作为值.类似于readonlychecked属性).

纯HTML - v4和v5 - 都不以这种方式与XML的限制相关联,并且不需要属性值disabled; 仅仅存在disabled属性就足以禁用该字段,无论您是否具有该属性的值,或该值是什么.

所有这些的最后结果是,如果您使用的是XHTML doctype,或者您希望保持XML兼容,那么您应该使用disabled="disabled".如果您不使用XHTML并且不关心有效的XML语法,那么您可以单独使用,也可以使用disabled您喜欢的任何属性值.

我要注意的另一件事(稍微偏离主题,但可能相关)是这可能会对可能引用该字段的任何CSS或JQuery代码产生影响.例如,我见过人们使用JQuery选择器,例如$('[disabled=disabled]')CSS中的类似选择器.这显然依赖于具有期望值的属性.因此,如果您要在选择器中引用这样的布尔属性,则应该在没有值的情况下引用它,如下所示:$('[disabled]')因为无论属性设置如何,这都将起作用.

  • xhtml中的attribtues应该是双引号,就像这个disabled ="disabled"一样.我知道很多浏览器不介意使用单引号,但它不会以xml或xhtml的形式传递 (4认同)
  • @PerHornshøj-Schierbeck - 通过阅读[XML规范](http://www.w3.org/TR/REC-xml/#NT-AttValue),特别是`AttValue`,单引号或双引号可能是用于包围属性值. (4认同)
  • @ N.Tan - 我已经更新了答案以扩展属性的原因,并且还链接到指定它的W3C的DTD文档.希望有助于更好地回答这个问题. (2认同)

Fen*_*ton 6

有这方面的文档,这些属性的官方术语是"布尔属性"

官方标准在W3C网站上http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2

它说:

它们出现在元素的开始标记中意味着属性的值为"true".他们的缺席意味着"虚假"的价值.

要使您的XHTML加价有效,您必须使用长手牌

<option selected="selected">
Run Code Online (Sandbox Code Playgroud)

对于HTML,您可以使用最小化的表单

<option selected>
Run Code Online (Sandbox Code Playgroud)

  • 好的伙计们......请仔细阅读XHTML1的历史! (3认同)