html disabled属性的正确值是什么?

epggiuax  于 2023-09-28  发布在  其他
关注(0)|答案(5)|浏览(157)

文本框或文本区域的disabled属性的正确值是多少?
我以前看到过下面的例子:

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

dkqlctbz1#

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

l2osamch2#

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

xmjla07d

xmjla07d3#

我刚刚尝试了所有这些,对于IE11,似乎唯一有效的是disabled=“true”。禁用的值或未给出值不起作用。事实上,jsp得到了一个错误,所有字段都需要equal,所以我必须指定disabled=“true”才能工作。

rt4zxlrg

rt4zxlrg4#

MDN上的setAttribute():

要设置布尔属性的值,例如disabled,您可以指定任何值。建议使用空字符串或属性名称。重要的是,如果属性存在,* 不管它的实际值 *,它的值都被认为是true。缺少该属性意味着其值为false。通过将disabled属性的值设置为空字符串(""),我们将disabled设置为true,这将导致按钮被禁用。
链接到MDN

解决方案

  • 我认为在XHTML Strict中是正确的disabled=“disabled”
  • HTML5只是禁用,就像。
  • JavaScript中,我使用e.disabled = true将值设置为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
    */
}
sd2nnvve

sd2nnvve5#

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

相关问题