W3docs

Balise HTML <textarea>

La balise HTML <textarea> définit un champ de formulaire pour la saisie de texte multiligne, autorisé lors de la soumission du formulaire.

La balise <textarea> définit un champ de formulaire permettant aux utilisateurs de saisir du texte multiligne. Contrairement à la balise <input>, le retour à la ligne automatique à l'intérieur de <textarea> est autorisé lors de la soumission du formulaire.

Une zone de texte peut contenir un nombre illimité de caractères. Le texte dans cette balise est rendu avec une police proportionnelle par défaut.

La balise <textarea> est utilisée à l'intérieur de la balise <form>.

Syntaxe

La balise <textarea> fonctionne par paire. Le contenu est écrit entre les balises ouvrante (<textarea>) et fermante (</textarea>).

Avertissement

Une erreur fréquente chez les débutants : un <textarea> ne prend pas d'attribut value. Sa valeur par défaut se place entre les balises ouvrante et fermante, contrairement à un <input> sur une seule ligne qui utilise value="…". Par exemple, <textarea>Hello</textarea> affiche « Hello », tandis que <input value="Hello"> affiche « Hello » — mais <textarea value="Hello"></textarea> n'affiche rien.

Astuce

Pour définir la taille d'un champ de texte, utilisez les attributs rows et cols, ou les propriétés CSS height et width.

Exemple de la balise HTML <textarea> :

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="post"> 
      <textarea name="comment" rows="12" cols="35">Send your comments to the author.</textarea><br />
      <input type="submit" name="submitInfo" value="Submit" />
    </form>
  </body>
</html>

Résultat

exemple de textarea

Dans cet exemple, nous utilisons <textarea> pour définir le champ de texte, l'attribut name pour lui attribuer un nom (« comment »), l'attribut rows pour définir sa hauteur visible (12 lignes) et l'attribut cols pour définir sa largeur visible (35 caractères).

Associer un label à un <textarea>

Chaque champ de formulaire devrait avoir une balise <label>. Reliez le label à la zone de texte en donnant à celle-ci un id et en pointant l'attribut for du label vers cette même valeur. Cela permet aux lecteurs d'écran d'annoncer le champ, et aux utilisateurs de cliquer sur le texte du label pour déplacer le focus dans la zone de texte — deux améliorations pour l'accessibilité et l'utilisabilité.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="post">
      <label for="comment">Your comment:</label><br />
      <textarea id="comment" name="comment" rows="6" cols="40"></textarea><br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Limiter et guider la saisie

Utilisez l'attribut maxlength pour limiter le nombre de caractères qu'un utilisateur peut saisir, et l'attribut placeholder pour afficher une courte indication dans un champ vide. Le placeholder disparaît dès que l'utilisateur commence à taper — ce n'est pas une valeur par défaut, il n'est donc jamais soumis avec le formulaire.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="post">
      <label for="bio">Short bio (max 100 characters):</label><br />
      <textarea id="bio" name="bio" rows="4" cols="40" maxlength="100"
                placeholder="Tell us a little about yourself..."></textarea><br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Styliser l'élément <textarea> avec CSS

La balise <textarea> est considérée comme un élément remplacé, car elle possède des dimensions intrinsèques. La styliser est relativement simple avec du CSS ordinaire.

Ses valeurs valides et invalides peuvent être mises en évidence avec les pseudo-classes :valid et :invalid.

Astuce

Dans la plupart des navigateurs, <textarea> est redimensionnable grâce à la propriété CSS resize. Le redimensionnement est activé par défaut. Vous pouvez le désactiver en passant la valeur resize à none.

Exemple de la balise HTML <textarea> avec des propriétés CSS :

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .comment {
        width: 60%;
        height: 100px;
        padding: 10px;
        outline: 0;
        border: 3px solid #1c87c9;
        background: #d0e2bc;
        line-height: 20px;
      }
    </style>
  </head>
  <body>
    <form>
      <p>Here we use CSS styles to customize the look of the text field.</p>
      <textarea class="comment"> Send your comments to the author.</textarea>
      <br />
      <input type="submit" name="submitInfo" value="Submit" />
    </form>
  </body>
</html>

Dans cet exemple, nous utilisons des styles CSS pour personnaliser l'apparence du champ de texte.

Contrôler le redimensionnement avec la propriété resize

Par défaut, la plupart des navigateurs ajoutent une poignée de glissement dans le coin d'un <textarea> afin que les utilisateurs puissent le redimensionner dans les deux directions. Vous pouvez contrôler cela avec la propriété CSS resize :

  • resize: none; — désactive entièrement le redimensionnement.
  • resize: vertical; — permet de redimensionner uniquement la hauteur.
  • resize: horizontal; — permet de redimensionner uniquement la largeur.
  • resize: both; — valeur par défaut, permet le redimensionnement dans les deux directions.
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      textarea {
        width: 60%;
        padding: 8px;
      }
      .no-resize {
        resize: none;
      }
      .vertical-only {
        resize: vertical;
      }
      .horizontal-only {
        resize: horizontal;
      }
    </style>
  </head>
  <body>
    <p>Not resizable:</p>
    <textarea class="no-resize" rows="3"></textarea>
    <p>Resizable vertically only:</p>
    <textarea class="vertical-only" rows="3"></textarea>
    <p>Resizable horizontally only:</p>
    <textarea class="horizontal-only" rows="3"></textarea>
  </body>
</html>

Attributs

AttributValeurDescription
autocompleteon, offIndique si la complétion automatique doit être activée pour le champ de texte.
autofocusautofocusDéfinit que la zone de texte doit recevoir le focus automatiquement au chargement de la page.
colsnombreDéfinit la largeur visible de la zone de texte. La valeur par défaut est 20 caractères.
dirnamedirnameSpécifie le nom d'un contrôle de formulaire masqué qui contiendra la direction du texte de la zone de texte lors de la soumission.
disableddisabledDéfinit que la zone de texte doit être désactivée.
formform_idDéfinit un ou plusieurs formulaires auxquels appartient la zone de texte (via l'id).
maxlengthnombreDéfinit le nombre maximum de caractères autorisés dans la zone de texte.
minlengthnombreDéfinit le nombre minimum de caractères autorisés dans la zone de texte.
nametexteDéfinit un nom pour la zone de texte.
placeholdertexteDéfinit une courte indication décrivant la valeur attendue dans la zone de texte. L'indication s'affiche quand le champ est vide et disparaît quand il reçoit le focus.
readonlyreadonlyDéfinit que la zone de texte est en lecture seule.
requiredrequiredDéfinit que la zone de texte doit être remplie avant l'envoi du formulaire.
rowsnombreDéfinit le nombre visible de lignes dans la zone de texte. La valeur par défaut dépend du navigateur (généralement 2).
spellchecktrue, false, defaultIndique si le texte dans la balise <textarea> doit être vérifié par le correcteur orthographique du navigateur ou du système d'exploitation.
wrapsoft, hardDéfinit la manière dont le texte d'une zone de texte doit être mis à la ligne lors de la soumission du formulaire. soft (par défaut) : le texte est envoyé sans sauts de ligne supplémentaires. hard : le navigateur insère des sauts de ligne en fonction de la largeur (nécessite cols).

La balise <textarea> supporte également les Attributs globaux et les Attributs d'événement.

Balises associées

  • <input> — contrôles de formulaire sur une seule ligne et spécialisés.
  • <form> — le conteneur qui regroupe et soumet les champs de formulaire.
  • <label> — labels qui rendent les champs de formulaire accessibles.

Entraînement

Pratique
Lesquels de ces attributs sont des attributs valides de la balise textarea HTML ? (Sélectionnez tout ce qui s'applique.)
Lesquels de ces attributs sont des attributs valides de la balise textarea HTML ? (Sélectionnez tout ce qui s'applique.)
Was this page helpful?