Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'élément HTML <select> représente un contrôle qui propose un menu d'options.
L'exemple ci-avant illustre une utilisation typique de <select>. Il reçoit un attribut id pour pouvoir être associé à un élément <label> à des fins d'accessibilité, ainsi qu'un attribut name pour représenter le nom de la donnée envoyée au serveur. Chaque option du menu est définie par un élément <option> imbriqué dans l'élément <select>.
Chaque élément <option> doit avoir un attribut value pour définir la valeur à envoyer au serveur lorsque cette option est sélectionnée. Si aucun attribut value n'est défini, la valeur par défaut sera le texte contenu dans l'élément. Vous pouvez définir un attribut selected sur un élément <option> pour qu'il soit sélectionné par défaut au chargement de la page. Si aucun attribut selected n'est défini, le premier élément <option> sera sélectionné par défaut.
Un élément <select> est représenté en JavaScript par un objet HTMLSelectElement, et cet objet possède une propriété value qui contient la valeur de l'option sélectionnée.
L'élément <select> possède des attributs spécifiques que vous pouvez utiliser pour le contrôler, comme multiple pour définir si plusieurs options peuvent être sélectionnées, et size pour définir combien d'options doivent être affichées en même temps. Il accepte aussi la plupart des attributs généraux des champs de formulaire comme required, disabled, autofocus, etc.
Vous pouvez également imbriquer des éléments <option> à l'intérieur d'éléments <optgroup> pour créer des groupes distincts d'options dans la liste déroulante. Il est aussi possible d'inclure des éléments <hr> pour créer des séparateurs qui ajoutent des ruptures visuelles entre les options.
Pour plus d'exemples, voir les contrôles natifs pour les formulaires.
Cet élément inclut les attributs universels.
autocompleteUne chaîne de caractères qui fournit une indication à l'agent utilisateur pour les fonctionnalités d'autocomplétion. Voir la page sur l'attribut autocomplete pour une liste des valeurs utilisables et de leurs impacts sur l'autocomplétion.
autofocusCet attribut booléen permet d'indiquer si ce contrôle du formulaire devrait recevoir le focus au chargement de la page. Pour un même document, seul un élément de formulaire peut avoir l'attribut autofocus activé.
disabledCet attribut booléen indique que l'utilisateur·ice ne peut pas intéragir avec le contrôle. Si cet attribut n'est pas utilisé, le contrôle héritera de l'état paramétré selon son conteneur (par exemple, via son élément parent <fieldset>. Si aucun élément parent n'a l'attribut disabled activé, le contrôle sera actif. form
L'élément <form> auquel associer le <select> (son propriétaire de formulaire). La valeur de cet attribut doit être l'id d'un <form> dans le même document. (Si cet attribut n'est pas défini, le <select> est associé à son élément <form> ancêtre, s'il existe.)
Cet attribut permet de définir l'association d'éléments <select> à des <form> n'importe où dans le document, pas seulement à l'intérieur d'un <form>. Il peut aussi définir une association différente de celle d'un ancêtre <form>.
multipleCet attribut booléen indique qu'on peut sélectionner plusieurs options parmi celles offertes dans le contrôle. Par défaut, si cet attribut n'est pas utilisé, seule une option peut être sélectionnée.
nameLe nom associé au contrôle.
requiredUn attribut booléen qui indique qu'une option dont la valeur est une chaîne de caractères non-vide doit être sélectionnée.
sizeSi le contrôle est affiché comme une liste déroulante à défilement (par exemple, lorsque multiple est défini), cet attribut permet de définir le nombre de lignes de la liste qui doivent être visibles en même temps. Les navigateurs ne sont pas obligés d'afficher un élément select sous forme de liste à défilement. La valeur par défaut est 0.
Note : Selon la spécification HTML, la valeur par défaut de size doit être 1 ; cependant, en pratique, cela a été constaté comme cassant certains sites web, et aucun autre navigateur ne fait cela actuellement, donc Mozilla a choisi de continuer à retourner 0 pour le moment avec Firefox.
Sur un ordinateur de bureau, il existe différentes façons de sélectionner plusieurs options pour un élément <select> utilisant un attribut multiple.
Pour les personnes qui utilisent la souris, il est possible de maintenir les touches Ctrl, Command ou Maj (selon le système d'exploitation utilisé) et de cliquer sur les différentes options afin de les sélectionner/déselectionner.
Attention : Les moyens décrits ci-après pour sélectionner des options qui ne sont pas contigües semblent ne fonctionner qu'avec Firefox.
Sous macOS, les raccourcis Ctrl + Flèche vers le haut et Ctrl + Flèche vers le bas sont en conflit avec les raccourcis système par défaut pour Mission Control et Fenêtres d'application, il faudra donc les désactiver pour que cela fonctionne.
Les utilisateur·ice·s du clavier pourront sélectionner des options contigües de la façon suivante :
Les utilisateur·ice·s du clavier pourront sélectionner des options non-contigües de la façon suivante :
L'élément <select> a historiquement été réputé difficile à mettre en forme efficacement avec CSS. Les guides suivants contiennent des informations sur les fonctionnalités plus récentes qui ont été introduites pour permettre des éléments de sélection entièrement personnalisables :
Dans les navigateurs qui ne prennent pas en charge les fonctionnalités modernes de personnalisation (ou dans des bases de code anciennes où elles ne peuvent pas être utilisées), vous êtes limité·e à la manipulation du modèle de boîte, de la police affichée, etc. Vous pouvez aussi utiliser la propriété CSS appearance pour supprimer l'apparence système par défaut.
Il reste cependant difficile d'obtenir un résultat cohérent entre navigateurs avec les éléments <select> traditionnels. Si vous souhaitez un contrôle total, il est conseillé d'utiliser une bibliothèque offrant de bonnes possibilités de mise en forme des modules complémentaires de formulaire, ou de créer votre propre menu déroulant à l'aide d'éléments non sémantiques, de JavaScript et de WAI-ARIA pour fournir la sémantique.
Vous pouvez utiliser la pseudo-classe CSS :open pour mettre en forme les éléments <select> à l'état ouvert, c'est-à-dire lorsque la liste déroulante des options est affichée. Cela ne s'applique pas aux éléments <select> multi-lignes (ceux avec l'attribut multiple défini) — ils sont généralement rendus comme une liste à défilement plutôt qu'une liste déroulante, donc n'ont pas d'état ouvert.
Pour plus d'informations sur la mise en forme héritée des <select> :
L'élément <hr> à l'intérieur d'un <select> doit être considéré comme purement décoratif, car il n'est actuellement pas exposé dans l'arbre d'accessibilité et donc pas accessible aux technologies d'assistance.
L'exemple suivant crée un menu déroulant à trois valeurs. La deuxième option inclut l'attribut selected, ce qui fait que cette option est sélectionnée par défaut.
L'exemple suivant crée un menu déroulant avec des groupes à l'aide de <optgroup> et <hr> pour faciliter la compréhension du contenu par l'utilisateur·ice.
L'exemple qui suit est légèrement plus complexe et illustre certaines fonctionnalités qui peuvent être utilisées avec un élément <select> :
| Contenu de flux, contenu phrasé, contenu interactif, listé, étiquetable, réinitialisable et qui peut être envoyé d'élément associé aux formulaires |
|
| Aucune, la balise d'ouverture et la balise de fermeture sont obligatoires. |
| Tout élément qui accepte du contenu phrasé. |
| combobox avec aucun attribut multiple et aucun attribut size supérieur à 1, sinon listbox. |
| menu avec aucun attribut multiple et aucun attribut size supérieur à 1, sinon combobox est autorisé mais n'est pas recommandé. |
| HTMLSelectElement |
| HTML # the-select-element |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 25 avr. 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.