Quelles valeurs pour cochées et sélectionnées sont fausses?

Je pense que selon les spécifications de W3, vous êtes censé faire

 

Et

  selected="selected" 

Mais, la plupart des navigateurs l’accepteront, il vous suffit d’écrire “CHECKED” et de ne pas lui donner de valeur. Donc, si vous incluez l’atsortingbut, y a-t-il des valeurs qui seraient (systématiquement) considérées comme fausses?

Aucune valeur ne désactive la case à cocher. Si l’atsortingbut checked existe, la case à cocher sera cochée, quelle que soit la valeur que vous avez définie.

               

Les atsortingbuts checked et selected sont autorisés que pour deux valeurs, à savoir une copie du nom de l’atsortingbut et (à partir du code HTML 5) une chaîne vide. Donner toute autre valeur est une erreur.

Si vous ne voulez pas définir l’atsortingbut, l’atsortingbut entier doit être omis.

Notez qu’en HTML 4, vous pouvez omettre tout sauf la valeur. HTML 5 a changé cela pour omettre tout sauf le nom (ce qui ne fait aucune différence pratique).

Ainsi, l’ensemble complet (hormis les variations de cAsE) des représentations valides de l’atsortingbut est:

         

Les documents servis en tant que text / html (HTML ou XHTML) seront transmis via un parsingur de variables, et la présence d’un atsortingbut vérifié (avec n’importe quelle valeur) sera traitée comme “Cet élément doit être coché”. Ainsi, bien qu’invalide, checked="true" , checked="yes" , et checked="false" déclenchera tous l’état vérifié.

Je n’ai pas eu envie de savoir quels mécanismes de récupération d’erreur sont en place pour le mode d’parsing XML si une valeur différente était atsortingbuée à l’atsortingbut, mais je m’attendrais à ce que l’inheritance HTML et / ou la récupération d’erreur simple le traitent de la même manière: si l’atsortingbut est là, l’élément est vérifié.

(Et tout ce qui précède s’applique également à la selected comme à la checked .)

Aucune valeur n’est considérée comme fausse , seulement l’absence de l’atsortingbut. Il existe cependant de nombreuses valeurs non valides, et certaines implémentations peuvent considérer certaines valeurs non valides comme fausses.

Spécification HTML5

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

L’atsortingbut content désactivé est un atsortingbut booléen.

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

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

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

Conclusion

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

     

Les éléments suivants ne sont pas valides :

     

L’absence de l’atsortingbut est la seule syntaxe valide pour false :

  

Recommandation

Si vous voulez écrire du XHTML valide, utilisez checked="checked" , puisque est invalide et que les autres alternatives sont moins lisibles. Sinon, utilisez simplement car il est plus court.

En fait, la spécification HTML 4.01 indique que ces atsortingbuts ne nécessitent aucune valeur. Je n’ai pas personnellement rencontré de situation où la fourniture d’une valeur rendait ces contrôles non sélectionnés.

Voici les liens respectifs vers le document de spécifications pour sélectionné et vérifié .

Edit: Firebug rend la case à cocher cochée, quelles que soient les valeurs que je mets entre guillemets pour l’atsortingbut checked (en tapant simplement “checked” sans aucune valeur), et les outils de développement de IE 8 forcent checked = “checked”. Cependant, je ne suis pas certain qu’il existe des outils similaires pour les autres navigateurs susceptibles de modifier l’état de rendu d’une case à cocher.

La chaîne vide est fausse en règle générale.

Apparemment, la chaîne vide n’est pas respectée comme vide dans tous les navigateurs et la présence de l’atsortingbut vérifié est considérée comme signifiée. Donc, l’atsortingbut entier doit être présent ou omis.