Quelle est la valeur correcte pour l'attribut désactivé?

167

Quelle est la valeur correcte de l' disabledattribut d'une zone de texte ou d'une zone de texte?

J'ai déjà vu ce qui suit utilisé:

<input type="text" disabled />
<input type="text" disabled="disabled" />
<input type="text" disabled="true" />
tskuzzy
la source
5
Les attributs doivent avoir une valeur, même pour les attributs dont la simple présence signale que quelque chose doit être fait. disabled="false"désactiverait toujours l'élément, car c'est la PRESENCE de disabledqui déclenche la désactivation, pas la valeur de l'attribut.
Marc B
Le lien que j'ai posté en commentaire à la réponse de js1568 confirme / clarifie ce que @Marc B dit: whatwg.org/specs/web-apps/current-work/multipage/…
James Allardice
duplication possible de stackoverflow.com/questions/1033944/… car les deux sont des attributs booléens (non marqués)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Réponses:

148
  • Pour XHTML, <input type="text" disabled="disabled" />est le balisage valide.
  • Pour HTML5, <input type="text" disabled />est valide et utilisé par le W3C sur leurs échantillons.
  • En fait, les deux méthodes fonctionnent sur tous les principaux navigateurs.
Erick Petrucelli
la source
15
En html5, l'entrée est un élément void et n'a pas besoin d'une barre oblique à fermeture automatique: w3.org/TR/html5/syntax.html#void-elements et w3.org/TR/html5/syntax.html#syntax-start- tag
Daniel
1
@Daniel K. Il n'en a pas besoin, à moins de faire du balisage HTML / XML polyglotte.
Patanjali
108

Spécification HTML5 :

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

L'attribut de contenu vérifié est un attribut booléen

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

La présence d'un attribut booléen sur un élément représente la valeur vraie et l'absence de l'attribut représente la valeur fausse.

Si l'attribut est présent, sa valeur doit être soit la chaîne vide, soit une valeur qui correspond à une correspondance ASCII insensible à la casse pour le nom canonique de l'attribut, sans espace de début ou de fin.

Conclusion :

Les éléments suivants sont valides, équivalents et vrais :

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

Les éléments suivants ne sont pas valides :

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

L'absence de l'attribut est la seule syntaxe valide pour false :

<input type="text" />

Recommandation

Si vous vous souciez d'écrire du XHTML valide, utilisez disabled="disabled", puisque <input disabled>n'est pas valide et les autres alternatives sont moins lisibles. Sinon, utilisez simplement <input disabled>car il est plus court.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
la source
3
Remarque: Si vous utilisez AngularJS et devez lier l'état désactivé à une variable, vous pouvez utiliser à la ng-disabledplace. Semblable à d'autres attributs comme celui-ci, ils ont généralement une ng-*contrepartie intelligente
jakub.g
5
disabled={true}fonctionne dans le code JSX reactJs mais je suis sûr qu'il serait transpilé dans l'un des formats HTML5 valides / autorisés uniquement.
RBT
1

J'ai juste essayé tout cela, et pour IE11, la seule chose qui semble fonctionner est disabled = "true". Les valeurs de désactivé ou aucune valeur donnée ne fonctionnaient pas. En fait, le jsp a obtenu une erreur qui est requise pour tous les champs, j'ai donc dû spécifier disabled = "true" pour que cela fonctionne.

Edmond ME
la source
1
La question d'OP portait sur le HTML (c'est-à-dire les contrôles côté client). Vous regardez les contrôles côté serveur; ceux-ci ont des conventions différentes. Vous remarquerez la différence si vous inspectez la sortie HTML de votre JSP. Si vous avez encore des doutes, essayez ce violon dans IE11.
Ruud Helderman
J'ai vu la même chose du côté client sur IE 11. IE 11 force quelque chose à exister, il suffit donc de définir des résultats désactivés dans disabled = ""
Robert Achmann
1

En HTML5, il n'y a pas de valeur correcte, tous les principaux navigateurs ne se soucient pas vraiment de ce qu'est l'attribut, ils vérifient simplement si l'attribut existe donc l'élément est désactivé.

MadsHaupt
la source