web-dev-qa-db-fra.com

Quelle est la syntaxe correcte de l'attribut readonly pour les éléments de texte en entrée?

Comme la plupart des gens, je connais l’attribut readonly de text input, Mais lors de la lecture de code sur d’autres sites Web (une de mes mauvaises habitudes), j’ai vu plus d’une implémentation pour cet attribut:

<input type="text" value="myvalue" class="class anotherclass" readonly >

et

<input type="text" value="myvalue" class="class anotherclass" readonly="readonly" >

et j'ai même vu

<input type="text" value="myvalue" class="class anotherclass" readonly="true" >

.. Et je crois en avoir vu encore plus, mais je ne peux pas me rappeler la syntaxe exacte maintenant ..

Alors, lequel est le bon que je devrais utiliser?

61
Obmerk Kronen

De w :

readonly = "lecture seule" ou "" (chaîne vide) ou empty - Spécifie que l'élément représente un contrôle dont la valeur n'est pas destinée à être modifiée.

Donc en gros c'est pareil.

68
Vucko

Spéc. HTML5 :

http://www.w3.org/TR/html5/forms.html#attr-input-readonly :

L'attribut readonly 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 correspondre à la chaîne vide ou à une correspondance ASCII) sans correspondance entre les majuscules et les minuscules pour le nom canonique de l'attribut, sans espace blanc de début ni de fin.

Conclusion :

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

<input type="text" readonly />
<input type="text" readonly="" />
<input type="text" readonly="readonly" />
<input type="text" readonly="ReAdOnLy" />

Les éléments suivants sont non valides :

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

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

<input type="text"/>

Recommandation

Si vous souhaitez écrire du XHTML valide, utilisez readonly="readonly", puisque <input readonly> n'est pas valide et les autres alternatives sont moins lisibles. Sinon, il suffit d'utiliser <input readonly> comme c'est plus court.

est devrait être

<input type="text" value="myvalue" class="class anotherclass" readonly="readonly" />
4
billah77