disabled属性的正确值是什么?

时间:2011-08-05 19:19:40

标签: html textbox textarea

文本框或文本区域的disabled属性的正确值是什么?

我之前看过以下用过:

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

5 个答案:

答案 0 :(得分:140)

  • 对于XHTML,<input type="text" disabled="disabled" />是有效标记。
  • 对于HTML5,<input type="text" disabled />有效并由W3C用于其样本。
  • 事实上,这两种方式适用于所有主流浏览器。

答案 1 :(得分:95)

HTML5规范

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

  

checked内容属性是布尔属性

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>,因为它更短。

答案 2 :(得分:1)

我刚尝试了所有这些,对于IE11,似乎唯一有用的东西是禁用=&#34; true&#34;。禁用或没有给定值的值不起作用。事实上,jsp得到的错误是所有字段都需要相等,所以我必须指定disabled =&#34; true&#34;为了这个工作。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

来自 MDN 的 setAttribute():

<块引用>

要设置布尔属性的值,例如禁用,您可以指定任何值。空字符串或属性名称是推荐值。重要的是,如果该属性完全存在,无论其实际值如何,其值都被认为是true。缺少该属性意味着其值为 false。通过将 disabled 属性的值设置为空字符串 (""),我们将 disabled 设置为 true >,这会导致按钮被禁用。

Link to MDN

解决方案

  • 我的意思是在 XHTML Strict 中是正确的 disabled="disabled"
  • 并且在 HTML5 中仅禁用,例如
  • javascript 中, 将值设置为 true 通过 e.disabled = true;
    "" 通过 setAttribute("disabled", "" );

在 Chrome 中测试

var f = document.querySelectorAll( "label.disabled input" );
for( var i = 0; i < f.length; i++ )
{
    // Reference
    var e = f[ i ];

    // Actions
    e.setAttribute( "disabled", false|null|undefined|""|0|"disabled" );
    /*
        <input disabled="false"|"null"|"undefined"|empty|"0"|"disabled">
        e.getAttribute( "disabled" ) === "false"|"null"|"undefined"|""|"0"|"disabled"
        e.disabled === true
    */
    
    e.removeAttribute( "disabled" );
    /*
        <input>
        e.getAttribute( "disabled" ) === null
        e.disabled === false
    */

    e.disabled = false|null|undefined|""|0;
    /*
        <input>
        e.getAttribute( "disabled" ) === null|null|null|null|null
        e.disabled === false
    */

    e.disabled = true|" "|"disabled"|1;
    /*
        <input disabled>
        e.getAttribute( "disabled" ) === ""|""|""|""
        e.disabled === true
    */
}