Pourquoi avons-nous besoin disabled=“disabled”?
Il semble être un consensus commun que pour les attributs XHTML qui ne nécessite pas de valeur, nous devons le répéter le nom de l'attribut. E. g. <input disabled>
dans le bon XHTML est <input disabled="disabled"/>
.
Cependant, nous pouvons obtenir le code HTML <input>
élément à être désactivé à l'aide de tout de l'suivantes:
-
<input disabled=" "/>
-
<input disabled=""/>
-
<input disabled="asdfg">
-
<input disabled="false">
Est-il réellement une règle officielle pour utiliser disabled="disabled"
? Ou est-ce une question de goût?
- La version de XHTML?
- je ne peux pas trouver n'importe quelle version de XHTML qui dit que cette utilisation est nécessaire. donc si vous pouviez trouver une seule version qui le dit, il répond pour l'essentiel à la question.
- J'ai fourni une réponse avec un lien vers les standards du W3C. Vous pouvez également vous reporter à validator.w3.org pour valider votre marque contre les normes officielles.
!
stand, n'est pas dans la plupart des langues que je connais.disabled="not"
semble confus pour moi.- donc, je pense que vous préférez
disabled="yes"
oudisabled="true"
par rapport àdisabled="disabled"
Vous devez vous connecter pour publier un commentaire.
Officiellement corriger xhtml syntaxe est
disabled="disabled"
.La raison pour cela est que le xhtml est une syntaxe XML et XML exige que les attributs ont des valeurs. Le xhtml spécifications également spécifier explicitement que la valeur doit être "désactivé".
La raison du choix de cette valeur sur toute autre valeur possible est assez arbitraire; ils ont simplement décidé que tous les attributs booléens doivent être converties au format XML en faisant de leur valeur, de même que leur nom.
Donc oui, il y a un officiel spec qui dit que vous devez utiliser cette syntaxe complète. Mais il ne s'applique qu'à des documents xhtml. Vous pouvez le trouver ici (si vous recherchez
disabled
dans cette page, vous trouverez qu'il est répertorié comme autorisant uniquement"disabled"
en tant que valeur. De même pour lereadonly
etchecked
attributs).HTML - à la fois v4 et v5 - n'est pas lié à XML restrictions de cette façon, et ne nécessite pas une valeur d'attribut pour
disabled
; la simple existence de ladisabled
attribut est suffisante pour désactiver le terrain, indépendamment de savoir si vous avez une valeur pour l'attribut, ou de ce que cette valeur est.Le résultat final de tout cela est que si vous utilisez un doctype XHTML, ou vous souhaitez rester compatible XML, vous devez utiliser
disabled="disabled"
. Si vous n'êtes pas en utilisant XHTML et vous ne se soucient pas d'avoir valide la syntaxe XML, vous pouvez simplement utiliserdisabled
sur son propre, ou avec n'importe quel valeur de l'attribut que vous souhaitez.Une autre chose que je remarque (être légèrement hors sujet, mais peut être pertinent), c'est que cela peut avoir un impact sur tout le CSS ou JQuery qui peuvent faire référence au champ. Par exemple, j'ai vu des gens utiliser des sélecteurs JQuery comme
$('[disabled=disabled]')
, et semblable en CSS. Ce repose évidemment sur l'attribut ayant la valeur attendue. Par conséquent, si vous allez pour faire référence à un attribut booléen comme cela dans un sélecteur, vous devez le référencer sans valeur, comme suit:$('[disabled]')
que cela fonctionne quel que soit l'attribut est défini à l'.AttValue
, soit entre guillemets simples ou doubles peuvent être utilisés pour entourer une valeur d'attribut.[disabled]
, il y a un sélecteur pour cette raison: désactivé.:disabled
existe exactement pour cette raison. Cependant, cela ne fonctionnera pas en pure CSS dans les navigateurs plus anciens. (qui sont toujours d'actualité, et l'ont été plus encore il y a deux ans, lorsque la question a été posée)Il y a de la documentation pour ce, le terme officiel pour ce genre d'attributs est "Attributs Booléens"
La norme officielle est sur le site web du W3C http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2
Il est dit que:
Pour votre XHTML mark-up pour être valide, vous devez utiliser la longue-main
Pour le HTML, vous pouvez utiliser le minimisé forme
@Spudley a déjà donné le lien vers le XHTML spécifications à fournir la documentation officielle.
Le choix de faire à la fois l'attribut et la valeur même dans le XHTML n'est pas entièrement arbitraire si.
Comme @Sohnee dit, XHTML 1.0 est une reformulation de HTML 4.01 XML et le but était de coller le HTML 4 modèles, autant que possible, de rendre la transition aussi facile que possible pour les auteurs de sites web.
HTML a toujours soutenu
disabled="disabled"
comme une forme valide pour les attributs de type boolean, et la raison en est-il permis la réduction de l'attributdisabled
être défini dans le SGML. (Note @Thaddee Tyl est "un peu étrange" commentaire)En SGML, le
disabled
sur son propre attribut n'est pas le nom de l'attribut sans valeur, c'est la valeur de l'attribut sans nom. c'est à dire le nom est déduit de la valeur. Pour faire tout ce travail en SGML et être compatible avec ce que les navigateurs ont toujours fait, le nom et la valeur doivent être définis de manière à être le même.Noter que cela ne concerne que le SGML en fonction de validation. Les navigateurs' analyseur logique n'est pas SGML et n'a jamais prêté attention à cette subtilité, d'où vous pouvez, dans la pratique, mettre en soit la valeur de l'attribut que vous souhaitez.
La validation HTML5 n'est pas basé sur SGML, donc la restriction a été assouplie.
disabled=""
est maintenant valide.disabled="true"
etdisabled="false"
ne sont pas valides cardisabled="false"
est source de confusion, car comme vous le notez, il désactive les, permet pas le contrôle. Voir http://www.w3.org/TR/html5/common-microsyntaxes.html#boolean-attributes pour plus de détails.Un document html4 spécifie ceci:
Attributs booléens ont toujours été un peu bizarre dans le sgml monde, alors, vraiment, vous pouvez mettre ce que vous voulez. La mise en oeuvre navigateur est tout ce qui compte.