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?
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.
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" />