禁用属性的正确值是什么?

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

我以前见过以下用法:

<input type="text" disabled />
<input type="text" disabled="disabled" />
<input type="text" disabled="true" />
125869 次浏览
  • 对于 XHTML,<input type="text" disabled="disabled" />是有效的标记。
  • 对于 HTML5,<input type="text" disabled />是有效的,W3C 在他们的示例中使用了 <input type="text" disabled />
  • 事实上,这两种方式在所有主流浏览器上都可以使用。

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

我刚刚尝试了所有这些,对于 IE11,唯一看起来有效的方法是禁用 = “ true”。禁用值或未给定值的值不起作用。事实上,jsp 得到了一个对所有字段都要求相等的错误,所以我必须指定峰值 = “ true”才能正常工作。

来自 MDN 的 setAttribute () :

若要设置布尔属性(如 残疾人)的值,可以指定任何值。建议使用空字符串或属性名称。重要的是,如果属性 不管它的实际价值存在,那么它的值就被认为是 没错。缺少该属性意味着它的值是 假的。通过将 残疾人属性的值设置为空字符串() ,我们将 残疾人设置为 没错,这将导致按钮被禁用。

链接到 MDN

解决方案

  • 我的意思是,在 XHTML 严格是正确的 伤残 = “伤残”,
  • HTML5中只有 残疾人,如 < input Name = “ myinput”禁用 >
  • Javascript中,将值设置为 或者通过 setAttribute (“残疾”,“”)到 ;

在铬中测试

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
*/
}