web-dev-qa-db-fra.com

Quelles valeurs peuvent apparaître dans l'attribut "sélectionné" de la balise "option"?

J'ai un balisage similaire au suivant:

<select>
  <option selected="selected">Apple</option>
  <option selected="">Orange</option>
</select>

Dans ce cas, "Orange" apparaît comme l'élément sélectionné. Je m'attendais à ce que l'attribut selected vide annule ses effets. Existe-t-il un moyen d'écrire cela sans simplement laisser l'attribut?

30
Travis Beale

Un navigateur différent peut traiter cet attribut différemment. Selon la documentation MSDN (pour Internet Explorer):

Pour sélectionner un élément en HTML, il n'est pas nécessaire de définir la valeur de l'attribut SELECTED sur true. La simple présence de l'attribut SELECTED définit sa valeur sur true.

Dans Firefox et Safari, cela fonctionne:

<option selected='false' />

D'après ce que je peux dire en regardant la norme WC3 officielle pour HTML4, le cas pris en charge est seulement:

<option selected='selected' />

Vous devrez soit émettre l'attribut de manière sélective, soit utiliser javascript pour contrôler quel élément est initialement sélectionné.

32
LBushkin

Spécification HTML5

https://www.w3.org/TR/html51/sec-forms.html#the-option-element

L'attribut de contenu sélectionné 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 vraie valeur et l'absence de l'attribut représente la fausse valeur.

Si l'attribut est présent, sa valeur doit être soit la chaîne vide, soit une valeur correspondant à ASCII non sensible à 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 :

<option selected />
<option selected="" />
<option selected="selected" />
<option selected="SeLeCtEd" />

Les éléments suivants sont invalides :

<option selected="0" />
<option selected="1" />
<option selected="false" />
<option selected="true" />

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

<option />

Recommandation

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

la seule valeur autorisée pour l'attribut sélectionné dans XHTML est "sélectionné" donc si vous voulez que votre balisage soit conforme à XHTML et fonctionne sur tous les navigateurs en le laissant est le seul choix pour le faire désélectionné

7
Rony

Non, l'existence de l'attribut sélectionné indique au navigateur qu'il s'agit de l'élément sélectionné. Tout ce qui se trouve dans les guillemets est ignoré.

Modifier: ce que vous pourriez faire (avec Javascript) est de rechercher des balises d'option avec selected = "", et d'en supprimer l'attribut sélectionné.

4
jimyi

En HTML (par opposition à XHTML), un simple attribut selected, sans aucune valeur, fonctionne très bien:

<option selected>Apple</option>
<option>Orange</option>

En XHTML (y compris XHTML5), vous avez besoin d'une valeur, qui doit également être selected:

<option selected="selected">Apple</option>
<option>Orange</option>

Cela fonctionne également très bien en HTML.

C'est généralement le cas pour les valeurs booléennes en (X) HTML. La façon de les mettre sur faux est de les omettre complètement. La définition de valeurs de true et false peut fonctionner, mais n'est pas standard.

Notez que pour une liste d'options, la première est sélectionnée par défaut, donc ce n'est pas du tout nécessaire dans ce cas.

2
TRiG

Il n'y a aucune autre valeur valide autre que "sélectionnée" pour cet attribut. ( http://www.w3schools.com/TAGS/att_option_selected.asp )

0
Chet

Selon w3schools , vous devez le définir comme: selected = "selected". Cela vous indique quelle option est initialement sélectionnée et vous permet de la définir ultérieurement via un script.

0
amischiefr