<select>
Une liste déroulante dans laquelle l’utilisateur choisit une ou plusieurs options.
- Affichage
- inline-block
- Balise fermante
- Obligatoire
- Contenu autorisé
- Éléments
<option>et<optgroup>
Exemple
#<label for="lang">Langue du cours</label>
<select id="lang" name="lang">
<option value="fr" selected>Français</option>
<option value="en">Anglais</option>
<option value="de">Allemand</option>
</select>Définition et utilisation
#L’élément <select> crée une liste de choix. Vous écrivez les options dans des éléments <option>, et vous pouvez regrouper des options liées dans un <optgroup>. Une fois le formulaire envoyé, le serveur reçoit la paire name=value de l’option choisie.
Une liste déroulante économise de la place quand il y a beaucoup d’options : pays, région, langue du cours. Avec deux ou trois options, des boutons radio sont souvent plus pratiques, car on voit toutes les possibilités d’un coup d’œil, sans avoir à cliquer.
Avec l’attribut multiple, la liste se transforme en une zone où l’on peut sélectionner plusieurs options (sur ordinateur, en maintenant Ctrl ou Cmd enfoncé). Cette solution est parfois peu intuitive, donc pour un choix multiple, envisagez plutôt un ensemble de cases checkbox.
Syntaxe
#<select name="nom">
<option value="a">Option A</option>
<option value="b">Option B</option>
</select>Attributs
#name
texte
Le nom sous lequel la valeur de l’option choisie arrive au serveur. Une liste sansnamene sera pas envoyée.attribut booléen
Permet de sélectionner plusieurs options. La liste s’affiche alors comme une zone déroulante avec défilement au lieu d’un menu déroulant, et le serveur reçoit une pairename=valuedistincte pour chaque option sélectionnée.nombre
Le nombre de lignes visibles de la liste. Une valeur supérieure à 1 transforme le menu déroulant en une zone de liste fixe, même sansmultiple.attribut booléen
Exige qu’une option avec une valeur non vide soit choisie. Un modèle courant consiste à mettre une première option avec unvaluevide, par exemple « Choisissez une ville… », qui agit comme une indication et échoue à la validation.attribut booléen
Désactive toute la liste. La valeur d’une liste désactivée n’est pas envoyée avec le formulaire.
L’élément accepte aussi tous les attributs globaux, comme class, id, style ou hidden.
Attributs en pratique
#multiple
attribut booléenPermet de sélectionner plusieurs options. La liste s’affiche alors comme une zone déroulante avec défilement au lieu d’un menu déroulant, et le serveur reçoit une paire name=value distincte pour chaque option sélectionnée.
<label for="topics">Qu’est-ce qui vous intéresse ?</label><br>
<select id="topics" name="topics" multiple>
<option value="frontend" selected>Frontend</option>
<option value="backend">Backend</option>
<option value="mobile" selected>Applications mobiles</option>
<option value="ai">Intelligence artificielle</option>
</select>size
nombreLe nombre de lignes visibles de la liste. Une valeur supérieure à 1 transforme le menu déroulant en une zone de liste fixe, même sans multiple.
<select name="level" size="3" aria-label="Niveau">
<option>Débutant</option>
<option>Intermédiaire</option>
<option>Avancé</option>
</select>required
attribut booléenExige qu’une option avec une valeur non vide soit choisie. Un modèle courant consiste à mettre une première option avec un value vide, par exemple « Choisissez une ville… », qui agit comme une indication et échoue à la validation.
<form>
<select name="city" required aria-label="Ville">
<option value="">Choisissez une ville…</option>
<option value="paris">Paris</option>
<option value="lyon">Lyon</option>
<option value="marseille">Marseille</option>
</select>
<button>Suivant</button>
</form>disabled
attribut booléenDésactive toute la liste. La valeur d’une liste désactivée n’est pas envoyée avec le formulaire.
<select name="plan" disabled aria-label="Plan">
<option>Forfait annuel</option>
</select>Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Reliez toujours la liste à une étiquette
<label>. Une première option « Choisissez… » ne remplace pas une étiquette. - L’apparence d’une liste déroulante ne peut être modifiée qu’en partie en CSS. Le nouveau mécanisme de style complet (
appearance: base-select) ne fonctionne pour l’instant que dans certains navigateurs. - Pour des listes très longues, par exemple des centaines de villes, envisagez plutôt un champ de texte avec des suggestions
<datalist>.
Entrées associées
#- <option>Une option unique d’une liste `<select>`, ou une suggestion dans un `<datalist>`.
- <optgroup>Un groupe nommé d’options à l’intérieur d’une liste `<select>`.
- <datalist>Une liste de suggestions pour un champ `<input>`. Vous pouvez choisir une proposition ou saisir votre propre valeur.
- <label>L’étiquette d’un champ de formulaire. Cliquer sur l’étiquette déplace le curseur vers le champ.
- <form>Un formulaire qui collecte des données auprès de l’utilisateur et les envoie à une adresse donnée.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.