--- title: slug: Web/HTML/Element/Input tags: - Element - Formulaires - HTML - Input - Reference - Web translation_of: Web/HTML/Element/input --- {{HTMLRef}} L'élément HTML **``** est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément `` dépend fortement de la valeur indiquée dans son attribut `type`. {{EmbedInteractiveExample("pages/tabbed/input-text.html", "tabbed-shorter")}} ## Les différents types de champs `` La façon dont un élément `` fonctionne dépend grandement de la valeur de son attribut `type`. Aussi, pour chacun de ces types, on aura une page de référence dédiée. Par défaut, lorsque l'attribut `type` n'est pas présent, il aura la valeur implicite `text`. Les types de champs disponibles sont : - `{{HTMLElement("input/button", "button")}}` : un bouton sans comportement défini. - `{{HTMLElement("input/checkbox", "checkbox")}}` : une case à cocher qui permet de sélectionner/déselectionner une valeur - `{{HTMLElement("input/color", "color")}}` : {{HTMLVersionInline("5")}} un contrôle qui permet de définir une couleur. - `{{HTMLElement("input/date", "date")}}` : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir une date (composé d'un jour, d'un mois et d'une année). - `{{HTMLElement("input/datetime-local", "datetime-local")}}` : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir une date et une heure (sans fuseau horaire). - `{{HTMLElement("input/email", "email")}}` : {{HTMLVersionInline("5")}} un champ qui permet de saisir une adresse éléctronique. - `{{HTMLElement("input/file", "file")}}` : un contrôle qui permet de sélectionner un fichier. L'attribut **`accept`** définit les types de fichiers qui peuvent être sélectionnés. - `{{HTMLElement("input/hidden", "hidden")}}` : un contrôle qui n'est pas affiché mais dont la valeur est envoyée au serveur. - `{{HTMLElement("input/image", "image")}}` : un bouton graphique d'envoi du formulaire. L'attribut `src` doit être défini avec la source de l'image et l'attribut `alt` doit être défini avec le texte alternatif. Les attributs `height` et `width` permettent de définir la taille de l'image en pixels. - `{{HTMLElement("input/month", "month")}}` : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir un mois et une année (sans fuseau horaire). - `{{HTMLElement("input/number", "number")}}` : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir un nombre. - `{{HTMLElement("input/password", "password")}}` : un champ texte sur une seule ligne dont la valeur est masquée. Les attributs `maxlength` et `minlength` définissent la taille maximale et minimale de la valeur à saisir dans le champ. > **Note :** Tout formulaire comportant des données sensibles doit être servi via HTTPS. Les navigateurs alertent les utilisateurs lorsque les formulaires avec de telles données sont uniquement disponibles via HTTP. - `{{HTMLElement("input/radio", "radio")}}` : un bouton radio qui permet de sélectionner une seule valeur parmi un groupe de différentes valeurs. - `{{HTMLElement("input/range", "range")}}` : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir un nombre dont la valeur exacte n'est pas importante. - `{{HTMLElement("input/reset", "reset")}}` : un bouton qui réinitialise le contenu du formulaire avec les valeurs par défaut. - `{{HTMLElement("input/search", "search")}}` : {{HTMLVersionInline("5")}} un champ texte sur une ligne pour des termes de recherche. Les sauts de ligne sont automatiquement retirés. - `{{HTMLElement("input/submit", "submit")}}` : un bouton qui envoie le formulaire. - `{{HTMLElement("input/tel", "tel")}}` : {{HTMLVersionInline("5")}} un contrôle pour saisir un numéro de téléphone. - `{{HTMLElement("input/text", "text")}}` : un champ texte sur une seule ligne. Les sauts de ligne sont automatiquement retirés. - `{{HTMLElement("input/time", "time")}}` : {{HTMLVersionInline("5")}} A control for entering a time value with no time zone. - `{{HTMLElement("input/url", "url")}}` : {{HTMLVersionInline("5")}} un champ permettant de saisir une URL. - `{{HTMLElement("input/week", "week")}}` : {{HTMLVersionInline("5")}} un contrôle permettant de saisir une date représentée par un numéro de semaine et une année (sans indication de fuseau horaire). Certains types sont désormais obsolètes : - `{{HTMLElement("input/datetime", "datetime")}}` : {{HTMLVersionInline("5")}} {{deprecated_inline}} {{obsolete_inline}} un contrôle pour saisir une date et une heure selon un fuseau horaire UTC. **Cette fonctionnalité a été [retirée du standard WHATWG HTML.](https://github.com/whatwg/html/issues/336)** ## Attributs L'élément `` est l'un des éléments HTML les plus complexes et puissants et il peut utiliser de nombreux types et attributs. Chaque élément `` étant basé sur l'interface DOM {{domxref("HTMLInputElement")}}, ils partagent tous, techniquement, les mêmes attributs. Toutefois, certains attributs ne fonctionnent que pour certains types de champs et certains attributs fonctionnent spécifiquement selon le type de champ. Sur cette page, vous trouverez des informations sur les attributs communs à l'ensemble des types d'éléments `` ainsi que la description de quelques attributs notables. ### Attributs communs à l'ensemble des types This section lists the attributes which are used by all form `` types. Attributes that are unique to particular input types—or attributes which are common to all input types but have special behaviors when used on a given input type—are instead documented on those types' pages. > **Note :** Les éléments `` peuvent bien entendu utiliser les [attributs universels](/fr/docs/Web/HTML/Attributs_universels). | Attribut | Description | | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{{anch("autocomplete")}}` | Une chaîne de caractères qui indique le type d'autocomplétion à utiliser. | | `{{anch("autofocus")}}` | Un attribut booléen qui passe le focus sur le champ lorsque le formulaire est affiché. | | `{{anch("disabled")}}` | Un attribut booléen qui indique si le champ doit être désactivé. | | `{{anch("form")}}` | L'identifiant du formulaire (la valeur de l'attribut `id` de l'élément {{HTMLElement("form")}}) auquel le champ est rattaché. Si cet attribut est absent, le champ sera rattaché au formulaire le plus proche qui le contient s'il existe. | | `{{anch("list")}}` | L'identifiant (valeur de l'attribut `id`) d'un élément {{HTMLElement("datalist")}} qui fournit une liste de suggestions. | | `{{anch("name")}}` | Le nom du champ qui sera rattaché à la donnée envoyée via le formulaire. | | `{{anch("readonly")}}` | Un attribut booléen qui indique si le champ peut être édité ou non. | | `{{anch("required")}}` | Un attribut booléen qui indique que le champ doit être renseigné avant de pouvoir envoyer le formulaire. | | `{{anch("tabindex")}}` | Une valeur numérique qui indique à l'agent utilisateur l'ordre selon lequel naviguer au clavier grâce à la touche Tab. | | `{{anch("type")}}` | Une chaîne de caractère qui indique l[e type de champ représenté par l'élément ``](#types). | | `{{anch("value")}}` | La valeur du champ. | #### {{htmlattrdef("autocomplete")}} Une chaîne de caractères qui décrit si le champ doit fournir des fonctionnalités d'autocomplétion. Cette autocomplétion peut notamment provenir des valeurs précédemment saisies dans le champ. D'autres méthodes plus complexes peuvent être utilisées : un navigateur pourra par exemple interagir avec la liste des contacts de l'appareil afin de proposer l'autocomplétion pour les adresses électroniques. Voir {{SectionOnPage("/fr/docs/Web/HTML/Attributs/autocomplete", "Valeurs")}} pour les valeurs qui peuvent être utilisées avec cet attribut. Cet attribut n'aura aucun effet sur les champs qui ne renvoient pas de valeurs numériques ou de textes (les champs `checkbox` ou `image` par exemple). Pour plus d'informations, voir [la page de documentation sur l'attribut HTML `autocomplete`](/fr/docs/Web/HTML/Attributs/autocomplete). #### {{htmlattrdef("autofocus")}} Un attribut booléen qui, lorsqu'il est présent, indique que le champ doit recevoir le focus lorsque le chargement de la page est terminé (ou que la boîte de dialogue ({{HTMLElement("dialog")}}) contenant l'élément est affichée). > **Note :** Un élément ayant l'attribut `autofocus` peut avoir le focus avant que l'évènement {{domxref("DOMContentLoaded")}} soit déclenché. Seul un élément du document peut avoir l'attribut `autofocus`. Il n'est pas possible d'utiliser l'attribut `autofocus` sur les champs de type `hidden` car ces derniers, masqués, ne peuvent pas avoir le focus. > **Attention :** Le focus automatique sur un champ de formulaire peut être source de confusion, notamment pour les personnes qui utilisent des lecteurs d'écran. En effet, lorsque `autofocus` est utilisé, les lecteurs d'écran « téléportent » l'utilisateur sur le contrôle du champ, sans aucun avertissement. #### {{htmlattrdef("disabled")}} Un attribut booléen qui, lorsqu'il est présent, indique que l'utilisateur ne devrait pas pouvoir interagir avec le champ. Les champs désactivés sont généralement affichés avec une couleur plus pale et/ou avec d'autres indications. Les champs désactivés avec cet attribut ne reçoivent pas l'évènement {{event("click")}} et ne sont pas envoyés avec le formulaire. > **Note :** Bien que ce ne soit pas indiqué dans la spécification, Firefox conserver l'état désactivé des champs, [y compris si cet état a été obtenu dynamiquement](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing), lors des rechargements de la page. L'attribut {{htmlattrxref("autocomplete","input")}} pourra être utilisé afin de contrôler cette fonctionnalité. #### {{htmlattrdef("form")}} Une chaîne de caractères qui indique l'élément {{HTMLElement("form")}} auquel le champ est associé (on parle de « formulaire propriétaire »). La valeur de cette chaîne de caractères doit correspondre à la valeur de l'attribut {{htmlattrxref("id")}} d'un élément `
``` #### Résultat {{EmbedLiveSample('Un_scénario_fréquent', '', '200')}} ## Localisation Pour certains types d'éléments ``, les valeurs saisies autorisées dépendent de la locale utilisée. Ainsi, dans certaines locales, 1,000.00 est un nombre valide alors que dans d'autres, il faudra avoir saisi 1.000,00 pour exprimer le même nombre. Firefox utilise la méthode heuristique suivante afin de déterminer la locale pour laquelle valider la saisie de l'utilisateur (au moins dans le cas de `type="number"`): - Utiliser la langue définie par l'attribut `lang`/`xml:lang` de l'élément ou par celui de ses parents. - Sinon utiliser la langue définie dans l'en-tête HTTP {{httpheader("Content-Language")}} - Sinon, utiliser la locale du navigateur ## Accessibilité ### Utilisation de libellés Lorsqu'on utilise des champs de formulaire, il est recommandé d'ajouter des libellés pour chacun de ces champs. Ainsi, les personnes qui utilisent des outils d'assistance pourront connaître la signification du champ. Dans l'exemple suivant, on illustre comment associer un élément `