Menu

Types d'input HTML : les 22 types de la balise input

Tous les types de la balise HTML <input> au même endroit : text, email, password, number, range, date et time, color, file, hidden et les autres, avec ce que chacun valide, le clavier qu'il ouvre sur téléphone et les attributs qu'ils partagent.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

La balise input et ses types

<input> est un champ de formulaire, et son attribut type décide de quel genre. La même balise crée une zone de texte, un curseur, un sélecteur de date ou un sélecteur de couleur. Essayez chaque champ ci-dessous et appuyez sur Submit pour voir ce qu'envoie le formulaire :

<input> est un élément vide, il n'a donc pas de balise fermante. Son name est la clé sous laquelle la valeur est envoyée, et value est la valeur de départ. Un type absent ou mal écrit donne un simple champ de texte.

Tous les types d'input HTML

typeCe que c'estRemarques
textUne ligne de textePar défaut
passwordDu texte affiché en pointsPas chiffré en soi ; envoyez-le en HTTPS
emailUne adresse e-mailValide le format ; touche @ sur les claviers de téléphone
urlUne adresse webDoit commencer par un schéma comme https://
telUn numéro de téléphonePavé téléphonique sur mobile, aucune vérification du format
searchUn champ de rechercheAffiche souvent un bouton d'effacement
numberUn nombreBoutons d'incrément, min, max, step
rangeUn curseurImprécis par nature ; la valeur est un nombre
dateUne dateLa valeur est YYYY-MM-DD
timeUne heure de la journéeLa valeur est HH:MM (sur 24 heures)
datetime-localDate et heure, sans fuseau horaireLa valeur est YYYY-MM-DDTHH:MM
monthUne année et un moisPas pris en charge par tous les navigateurs
weekUne année et un numéro de semainePas pris en charge par tous les navigateurs
colorUn sélecteur de couleurLa valeur est #rrggbb en minuscules
checkboxUne case à cocherVoir case à cocher HTML
radioUn choix parmi un groupeVoir bouton radio HTML
fileUn sélecteur de fichieraccept, multiple
hiddenUne valeur envoyée mais pas affichéePour les identifiants et les jetons
submitUn bouton d'envoi<button type="submit"> est plus souple
resetUn bouton de réinitialisationRarement une bonne idée
buttonUn bouton qui ne fait rien tout seulPour le JavaScript
imageUn bouton d'envoi dessiné comme une imageEnvoie aussi les coordonnées du clic

Les types texte et les claviers de téléphone

email, url, tel, search et text ressemblent tous à une zone de texte sur ordinateur. La différence tient à la validation et, sur téléphone, au clavier qui s'ouvre. Dans cet exemple, la bordure devient verte ou rouge selon le jugement du navigateur sur la valeur :

  • ada@example est un e-mail valide pour le navigateur : il vérifie seulement la présence de texte, d'un @ et d'un domaine, pas que le domaine contienne un point. La vraie vérification se fait sur le serveur.
  • example.com n'est pas une url valide, car il n'a pas de schéma. https://example.com l'est.
  • tel accepte tout. Les formats de téléphone varient trop d'un pays à l'autre, il n'y a donc pas de vérification intégrée ; ajoutez un pattern si vous en avez besoin.
  • inputmode="numeric" demande aux téléphones un clavier numérique sans les inconvénients de type="number", c'est pourquoi c'est le bon choix pour les codes postaux, les codes à usage unique et les numéros de carte.

number et range

Les deux acceptent min, max et step. number sert aux valeurs exactes ; range est un curseur pour des valeurs où le nombre exact compte moins. Un curseur range n'affiche aucun nombre, alors associez-le à un <output> :

step vaut 1 par défaut pour number, donc un champ de prix sans step="0.01" refuse 4.99 à l'envoi du formulaire. En JavaScript, input.value est toujours une chaîne ; utilisez input.valueAsNumber pour obtenir un nombre.

Dates et heures

Les types de date et d'heure ouvrent le sélecteur propre au navigateur. Ce que voit le lecteur suit sa langue et sa région (09/24/2026, 24.09.2026), mais la valeur a toujours le même format fixe :

Ce format fixe est ce que reçoit le serveur et ce que lit le JavaScript, donc vous n'avez jamais à analyser « 24.09.2026 ». min et max prennent le même format. datetime-local n'a pas de fuseau horaire : si c'est important, convertissez sur le serveur avec le fuseau du lecteur.

color et file

accept="image/*" limite le sélecteur de fichiers aux images (et propose l'appareil photo sur téléphone) ; il accepte aussi des extensions, comme accept=".pdf,.docx". Ce n'est qu'une indication pour le sélecteur, donc vérifiez le type de fichier sur le serveur. multiple autorise plusieurs fichiers. Un vrai envoi de fichier demande aussi method="post" et enctype="multipart/form-data" sur le formulaire.

Des suggestions avec datalist

Un <datalist> donne à un champ de texte une liste de suggestions tout en autorisant n'importe quelle valeur. Reliez-les avec l'attribut list :

Tapez « ja » dans le champ pour voir les suggestions correspondantes. Contrairement à une liste déroulante select, le lecteur peut taper une valeur absente de la liste.

Les attributs des inputs

AttributRôle
nameLa clé sous laquelle la valeur est envoyée
valueLa valeur de départ
placeholderUne indication affichée tant que le champ est vide (pas un label)
requiredDoit être rempli avant l'envoi
disabledInutilisable, et pas envoyé
readonlyNon modifiable, mais envoyé
autocompleteCe qu'il faut remplir automatiquement : email, name, current-password, one-time-code, off
min, max, stepLimites pour les nombres, curseurs, dates et heures
minlength, maxlengthLimites de longueur pour les types texte
patternUne expression régulière à laquelle toute la valeur doit correspondre
inputmodeLe clavier de téléphone à afficher : numeric, decimal, email, tel, url
listL'id d'un <datalist>
multiplePlusieurs valeurs, pour email et file
acceptLes types de fichiers pour file

Erreurs fréquentes

  • type="number" pour les numéros de téléphone, codes postaux ou numéros de carte. Ce ne sont pas des quantités. Utilisez tel ou text avec inputmode="numeric".
  • Un champ de prix sans step="0.01". Les valeurs décimales échouent à la validation.
  • Utiliser placeholder comme label. Il disparaît dès que le lecteur tape.
  • Compter sur accept ou type="email" pour la sécurité. Ce sont des commodités ; le serveur revérifie.
  • type="month" ou type="week" sans solution de repli. Certains navigateurs affichent un simple champ de texte.
  • Une balise fermante </input>. <input> est vide.

Questions fréquentes

Combien y a-t-il de types d'input en HTML ?

22 : button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url et week. Un type inconnu ou absent se comporte comme text.

Quel est le type d'input par défaut en HTML ?

text. Un <input> sans type, ou avec un type que le navigateur ne connaît pas, est un champ de texte sur une seule ligne.

Faut-il utiliser type="number" pour les numéros de téléphone ou les codes postaux ?

Non. number est fait pour les quantités : il ajoute des boutons d'incrément et refuse le +, les espaces et les traits d'union que contiennent les numéros de téléphone. Utilisez type="tel" pour les numéros de téléphone, et type="text" avec inputmode="numeric" pour les codes comme les codes postaux et les numéros de carte.

Quel format utilise input type date ?

La valeur est toujours YYYY-MM-DD, comme 2026-09-24, quel que soit le format que le lecteur voit à l'écran. L'affichage suit la langue et la région du lecteur ; la valeur envoyée et lue en script, non.

La balise input a-t-elle besoin d'une balise fermante ?

Non. <input> est un élément vide : écrivez <input type="text" name="city">. Un </input> fermant est invalide, et la barre oblique de <input /> est autorisée mais ne fait rien.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER