W3docs

Etiqueta HTML <textarea>

La etiqueta HTML <textarea> define un campo de formulario donde los usuarios pueden ingresar texto de varias líneas, enviado al enviar el formulario.

La etiqueta <textarea> define un campo de formulario donde los usuarios pueden ingresar texto de varias líneas. A diferencia de la etiqueta <input>, el ajuste de texto dentro de <textarea> está permitido cuando se envía el formulario.

Un área de texto puede tener un número ilimitado de caracteres. El texto dentro de esta etiqueta se renderiza en una fuente proporcional de forma predeterminada.

La etiqueta <textarea> se usa dentro de la etiqueta <form>.

Sintaxis

La etiqueta <textarea> va en pares. El contenido se escribe entre las etiquetas de apertura (<textarea>) y cierre (</textarea>).

Advertencia

Un error común entre principiantes: <textarea> no acepta un atributo value. Su valor predeterminado va entre las etiquetas de apertura y cierre, a diferencia de un <input> de una sola línea, que usa value="…". Por ejemplo, <textarea>Hello</textarea> muestra "Hello", mientras que <input value="Hello"> muestra "Hello" — pero <textarea value="Hello"></textarea> no muestra nada.

Consejo

Para definir el tamaño de un campo de texto, use los atributos rows y cols, o las propiedades CSS height y width.

Ejemplo de la etiqueta 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>

Resultado

ejemplo de textarea

En este ejemplo usamos <textarea> para definir el campo de texto, el atributo name para asignar un nombre a este campo ("comment"), el atributo rows para establecer su altura visible (12 líneas) y el atributo cols para establecer su anchura visible (35 caracteres).

Asociar una etiqueta con un <textarea>

Cada campo de formulario debe tener una etiqueta <label>. Conecte la etiqueta al textarea asignándole un id al textarea y apuntando el atributo for de la etiqueta a ese mismo valor. Esto permite que los lectores de pantalla anuncien el campo, y que los usuarios hagan clic en el texto de la etiqueta para mover el foco al textarea — ambas mejoras para la accesibilidad y la usabilidad.

<!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>

Limitar e indicar la entrada

Use el atributo maxlength para limitar cuántos caracteres puede escribir un usuario, y el atributo placeholder para mostrar una pista breve dentro de un campo vacío. El placeholder desaparece en cuanto el usuario comienza a escribir — no es un valor predeterminado, por lo que nunca se envía con el formulario.

<!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>

Aplicar estilos al elemento <textarea> con CSS

La etiqueta <textarea> se considera un elemento reemplazado, ya que tiene algunas dimensiones intrínsecas. Aplicar estilos a esta etiqueta es relativamente sencillo con CSS estándar.

Sus valores válidos e inválidos pueden resaltarse con las pseudoclases :valid e :invalid.

Consejo

En la mayoría de los navegadores, <textarea> es redimensionable gracias a la propiedad CSS resize. El redimensionamiento está habilitado de forma predeterminada. Puede deshabilitarlo estableciendo el valor de resize en none.

Ejemplo de la etiqueta HTML <textarea> con propiedades 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>

En este ejemplo usamos estilos CSS para personalizar la apariencia del campo de texto.

Controlar el redimensionamiento con la propiedad resize

De forma predeterminada, la mayoría de los navegadores agregan un controlador de arrastre en la esquina de un <textarea> para que los usuarios puedan redimensionarlo en ambas direcciones. Puede controlar esto con la propiedad CSS resize:

  • resize: none; — deshabilita el redimensionamiento por completo.
  • resize: vertical; — permite redimensionar solo la altura.
  • resize: horizontal; — permite redimensionar solo la anchura.
  • resize: both; — el valor predeterminado, permite redimensionar en ambas direcciones.
<!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>

Atributos

AtributoValorDescripción
autocompleteon, offEspecifica si el campo de texto debe tener el autocompletado habilitado.
autofocusautofocusDefine que el área de texto debe obtener el foco automáticamente cuando se carga la página.
colsnumberDefine la anchura visible de un área de texto. El valor predeterminado es 20 caracteres.
dirnamedirnameEspecifica el nombre de un control de formulario oculto que contendrá la dirección del texto del textarea al enviarlo.
disableddisabledDefine que un área de texto debe estar deshabilitada.
formform_idDefine uno o más formularios a los que pertenece el área de texto (mediante id).
maxlengthnumberDefine el número máximo de caracteres permitidos en el área de texto.
minlengthnumberDefine el número mínimo de caracteres permitidos en el área de texto.
nametextDefine un nombre para el área de texto.
placeholdertextDefine una pista breve que describe el valor esperado de un área de texto. La pista se muestra cuando el campo está vacío y desaparece cuando recibe el foco.
readonlyreadonlyDefine que un área de texto es de solo lectura.
requiredrequiredDefine que un área de texto debe completarse antes de enviar el formulario.
rowsnumberDefine el número visible de filas en un área de texto. El valor predeterminado depende del navegador (normalmente 2).
spellchecktrue, false, defaultEspecifica si el texto en la etiqueta <textarea> debe ser verificado ortográficamente por el navegador o el sistema operativo.
wrapsoft, hardDefine cómo se ajusta el texto en un área de texto al enviar el formulario. soft (predeterminado): el texto se envía sin saltos de línea adicionales. hard: el navegador inserta saltos de línea según el ancho (requiere cols).

La etiqueta <textarea> también admite los Atributos Globales y los Atributos de Eventos.

Etiquetas relacionadas

  • <input> — controles de formulario de una sola línea y especializados.
  • <form> — el contenedor que agrupa y envía los campos del formulario.
  • <label> — etiquetas que hacen accesibles los campos del formulario.

Práctica

Práctica
¿Cuáles de estos son atributos válidos de la etiqueta textarea de HTML? (Selecciona todos los que apliquen.)
¿Cuáles de estos son atributos válidos de la etiqueta textarea de HTML? (Selecciona todos los que apliquen.)
Was this page helpful?