Los formularios son una de las partes más importantes de la web. Sin ellos, no habría una forma fácil de recoger datos, buscar recursos o inscribirse para recibir información valiosa.

Los formularios se pueden incrustar en los sitios web con el elemento form HTML. Dentro del elemento formulario se anidan varias entradas. Estas entradas también se conocen como controles de formulario.

En este tutorial, exploraremos el elemento form HTML, los distintos tipos de entrada que admite y cómo crear un botón de envío con el que se envían los datos.

Al final, sabrás cómo funcionan los formularios y podrás hacerlos con confianza.

Sintaxis básica de los formularios HTML

<form action="wordesdecero.es" method="POST">
    <!--Las entradas (input) de cualquier tipo y áreas de texto van aquí->
</form>

Tipos de Formularios HTML

La etiqueta <input> se utiliza para crear varios controles de formulario en HTML. Es un elemento en línea y toma atributos como type, name, minlength, maxlength, placeholder, etc. Cada uno de ellos tiene valores específicos que toman.

El atributo placeholder es importante ya que ayuda al usuario a entender el propósito del campo de entrada antes de que escriba algo.

Hay 20 tipos de entrada diferentes, y los veremos uno por uno.

Type Text

Este tipo de entrada toma un valor de “text”, por lo que crea una sola línea de entrada de texto.

<input type="text" placeholder="Ingresa tu nombre" />

Una entrada con el tipo de texto (“text“) se parece a la captura de pantalla siguiente:

Type Text en HTML
Type Text en HTML

Type Password

Como su nombre indica, una entrada con un tipo password crea una contraseña. Es automáticamente invisible para el usuario, a menos que sea manipulada por JavaScript.

<input type="password" placeholder="Ingresa tu contraseña" />
Type Password en HTML
Type Password en HTML

Type Email

Cualquier entrada con el tipo email define un campo para introducir una dirección de correo electrónico.

<input type="email" placeholder="Ingresa tu correo electrónico" />
Type Email en HTML
Type Email en HTML

Type Number

Este tipo de entrada permite al usuario insertar sólo números.

<input type="number" placeholder="Ingresa un número" />
Type Number en HTML
Type Number en HTML

Type Radio

A veces, los usuarios tendrán que elegir una de las numerosas opciones. Un campo de entrada con sus atributos de tipo establecidos en “radio” le permite hacer esto.

 <input type="radio" />

Un ejemplo más completo:

<!DOCTYPE html>
<html>
<h3>Ejemplo de Botones Radio</h3>
<body>
    <form>
        SELECCIONA GÉNERO
        <br>
        <input type="radio" name="gender" id="male">
        <label for="male">Masculino</label><br>
        <input type="radio" name="gender" id="female">
        <label for="female">Femenino</label>
    </form>
</body>
</html>
Ejemplo de Type Radio en HTML
Ejemplo de Type Radio en HTML

Type Checkbox

Así, con un tipo de entrada de radio, los usuarios podrán elegir una de las numerosas opciones. ¿Qué pasa si quieres que elijan tantas opciones como sea posible? Eso es lo que hace una entrada con un atributo de tipo establecido como checkbox.

<input type="checkbox" />

Un ejemplo más completo:

<!DOCTYPE html>
<html>
<h3>Ejemplo de Checkboxes HTML</h3>
<body>
    <form>
        <b>SELECCIONA MATERIAS</b>
        <br>
        <input type="checkbox" name="subject" id="maths">
        <label for="maths">Matemáticas</label>
        <input type="checkbox" name="subject" id="science">
        <label for="science">Ciencia</label>
        <input type="checkbox" name="subject" id="language">
        <label for="english">Idiomas</label>
    </form>
</body>
</html>
Ejemplo de Type Checkbox en HTML
Ejemplo de Type Checkbox en HTML

Type Submit

Este tipo se utiliza para añadir un botón de envío a los formularios. Cuando un usuario hace clic en él, se envía automáticamente el formulario. Toma un atributo de valor, que define el texto que aparece dentro del botón.

<input type="submit" value="Enter para ganar" />
Ejemplo de Type Submit en HTML
Ejemplo de Type Submit en HTML

Type Button

Una entrada con un tipo establecido como button crea un botón, que puede ser manipulado por el tipo de oyente de eventos onClick de JavaScript. Crea un botón igual que una entrada de tipo submit, pero con la excepción de que el valor está vacío por defecto, por lo que hay que especificarlo.

<input type="button" value="Enviar" />
Ejemplo de Type Button en HTML
Ejemplo de Type Button en HTML

Type File

Define un campo para el envío de archivos. Cuando un usuario hace clic en él, se le pide que inserte el tipo de archivo deseado, que puede ser una imagen, un PDF, un archivo de documento, etc.

<input type="file" />

El resultado de un tipo file de entrada tiene el siguiente aspecto:

Ejemplo de Type File en HTML
Ejemplo de Type File en HTML

Type Color

Se trata de un tipo de entrada elegante introducido por HTML5. Con él, el usuario puede enviar su color favorito, por ejemplo. El negro (#000000) es el valor por defecto, pero se puede anular estableciendo el valor a un color deseado.

Muchos desarrolladores lo han utilizado como truco para conseguir seleccionar diferentes tonos de color disponibles en formatos RGB, HSL y alfanuméricos.

<input type="color" />

Este es el resultado de un tipo de entrada color:

Ejemplo de Type Color en HTML
Ejemplo de Type Color en HTML

Type Search

La entrada con el tipo search define un campo de texto al igual que un tipo de entrada de texto. Pero, esta vez tiene el único propósito de buscar información. Se diferencia del tipo text en que, una vez que el usuario comienza a escribir, aparece un botón de cancelación.

<input type="search" />
Ejemplo de Type Search en HTML
Ejemplo de Type Search en HTML

Type URL

Cuando el atributo type de una etiqueta de entrada se establece como url, muestra un campo donde los usuarios pueden introducir una URL.

<input type="url" />
Ejemplo de Type URL en HTML
Ejemplo de Type URL en HTML

Type Tel

Un tipo de entrada tel te permite recoger los números de teléfono de los usuarios.

<input type="tel" />
Ejemplo de Type Tel en HTML
Ejemplo de Type Tel en HTML

Type Date

Es posible que te hayas registrado en un sitio web en el que hayas solicitado la fecha de un determinado evento. El sitio probablemente utilizó una entrada con el valor de tipo establecido en date para lograr esto.

<input type="date" />

Este es el aspecto de una entrada con tipo date:

Ejemplo de Type Date en HTML
Ejemplo de Type Date en HTML

Type Datetime-local

Esto funciona como el tipo de entrada date, pero también permite al usuario elegir una fecha con una hora determinada.

<input type="datetime-local" />
Ejemplo de Type Datetime-local en HTML
Ejemplo de Type Datetime-local en HTML

Type Week

El tipo de entrada week permite al usuario seleccionar una semana específica.

<input type="week" />
Ejemplo de Type Week en HTML
Ejemplo de Type Week en HTML

Type Month

La entrada con el tipo month rellena los meses para que el usuario los elija al hacer clic.

<input type="month" />
Ejemplo de Type Month en HTML
Ejemplo de Type Month en HTML

Textarea

Hay ocasiones en las que un usuario necesitará rellenar múltiples líneas de texto que no serían adecuadas en un tipo de entrada de texto (ya que especifica un campo de texto de una línea).

textarea permite al usuario hacer esto ya que define múltiples líneas de entrada de texto. Toma sus propios atributos como cols – para el número de columnas, y rows para el número de filas.

<textarea cols="50" rows="20"></textarea>
Ejemplo de Textarea en HTML
Ejemplo de Textarea en HTML

Selección Múltiple con select

Es como un botón de radio y una casilla de verificación en un solo paquete. Está incrustado en la página con dos elementos – un elemento de selección (select) y una opción (option), que siempre está anidada dentro de la selección.

Por defecto, el usuario sólo puede elegir una de las opciones. Pero, con los atributos múltiples, puedes permitir que el usuario seleccione más de una de las opciones.

<select>
      <option value="HTML">Selecciona un Lenguaje</option>
      <option value="HTML">HTML</option>
      <option value="CSS">CSS</option>
      <option value="JavaScript">JavaScript</option>
      <option value="React">Java</option>
</select>
Ejemplo de select en HTML
Ejemplo de select en HTML

Cómo Etiquetar los Input HTML

Asignar etiquetas a los controles de formulario es importante. Cuando están correctamente conectadas al campo input a través de su atributo for y el atributo id del input, es más fácil para el usuario utilizarlas, ya que puede hacer clic en la propia etiqueta para acceder a la entrada.

<label for="name">Nombre</label>
<input type="text" id="name" /> <br />
<label for="check">Aceptar las condiciones</label>
<input type="checkbox" id="check" />
Ejemplo de label en input HTML
Ejemplo de label en input HTML

Cómo Funcionan los Formularios HTML

Cuando un usuario rellena un formulario y lo envía con el botón de envío (submit), los datos de los controles del formulario se envían al servidor a través de los métodos de petición HTTP GET o POST.

¿Cómo se indica al servidor? El elemento form toma un atributo action, cuyo valor debe ser la URL del servidor. También toma un atributo method, donde se especifica el método HTTP que utiliza para transmitir los valores al servidor.

Este método puede ser GET o POST. Con el método GET, los valores introducidos por el usuario son visibles en la URL cuando se envían los datos. Pero, con POST, los valores se envían en las cabeceras HTTP, por lo que esos valores no son visibles en la URL.

Si no se utiliza un atributo de método en el formulario, se asume automáticamente que el usuario quiere utilizar el método GET, porque es el predeterminado.

Entonces, ¿Cuándo debe utilizar el método GET o POST? Utiliza el método GET para enviar datos no sensibles o recuperar datos de un servidor (por ejemplo, durante las búsquedas). Utiliza la solicitud POST cuando envíes archivos o datos sensibles.

Mini Proyecto: Construir un Formulario de Contacto Básico

Tomemos lo que hemos aprendido sobre los formularios y utilicémoslo para hacer un simple formulario de contacto. También introduciré algunos conceptos nuevos a medida que avancemos para redondearlo todo.

Aquí está el HTML:

<form action=ejemplo-servidor.com">
      <fieldset>
        <legend>Contacto</legend>
        <div class="form-control">
          <label for="name">Nombre</label>
          <input type="name" id="name" placeholder="Ingresa tu nombre" required />
        </div>
        <div class="form-control">
          <label for="email">Email</label>
          <input
            type="email"
            id="email"
            placeholder="Ingresa tu correo"
            required
          />
        </div>
        <div class="form-control">
          <label for="message">Mensaje</label>
          <textarea
            id="message"
            cols="30"
            rows="10"
            placeholder="Ingresa tu mensaje"
            required
          ></textarea>
        </div>
        <input type="submit" value="Enviar" class="submit-btn" />
      </fieldset>
</form>

¿Qué ocurre en este código HTML?

En primer lugar, un elemento form está envolviendo a todos los demás elementos. Tiene una acción establecida para “ejemplo-servidor.com“, un servidor ficticio donde se recibirán los datos del formulario.

Después del elemento form, todos los demás elementos están también rodeados por un elemento fieldset con una etiqueta legend justo debajo.

Utilizamos el elemento o la etiqueta fieldset para agrupar las inputs relacionadas, y la etiqueta legend contiene una leyenda que transmite de qué trata el formulario.

Las inputs name, email y textarea están todas en un div con una clase form-control. Así que se comportan como un elemento de bloque, con el fin de hacer más fácil el estilo con CSS.

También se validan con el atributo required, por lo que el formulario no se envía cuando esos campos están vacíos o cuando el usuario no escribe los valores en el formato adecuado.

Después de todo esto, tendremos el resultado de la captura de pantalla de abajo:

Ejemplo de Formulario de Contacto en HTML
Ejemplo de Formulario de Contacto en HTML

¿Qué tan feo es eso? Tenemos que aplicarle un poco de estilo.

Aquí está el CSS:

body {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    font-family: cursive;
  }
 input,
    textarea {
    width: 100%;
    padding: 5px;
    outline: none;
  }
  label {
    line-height: 1.9rem;
  }
  input[type="submit"] {
   transform: translate(2.2%);
   padding: 3px;
   margin-top: 0.6rem;
   font-family: cursive;
   font-weight: bold;
  }
 fieldset {
   padding: 20px 40px;
 }

¿Qué hace el código CSS aquí?

Centramos todo en el cuerpo horizontalmente con Flexbox, y verticalmente con una altura de vista del 100%. Usamos un font-family de cursiva.

Le dimos a las inputs y al textarea un ancho de 100% para que se extiendan a lo largo de toda la página. Las etiquetas tienen una altura de línea mínima de 1,9rem (30,4px), para que no queden demasiado cerca de sus respectivas entradas.

Específicamente estilizamos el botón (tipo de entrada button) con la propiedad transform para empujarlo al centro ya que estaba un poco descentrado. Le dimos un padding de 3px para tener más espacio alrededor. Luego seleccionamos una fuente cursiva con un peso de negrita (bold).

Como el botón estaba demasiado cerca del textarea, le pusimos un margin-top de 0.6rem para empujarlo un poco hacia abajo.

Le dimos a nuestro elemento fieldset un padding de 20px en la parte superior e inferior, con 40px a la izquierda y a la derecha para apartar el borde que crea alrededor de los elementos del formulario en el que está envuelto.

Al final de todo, tenemos el hermoso formulario de abajo:

Formulario de contacto con HTML y CSS
Formulario de contacto con HTML y CSS

Conclusión

Espero que este tutorial te haya ayudado a entender cómo funcionan los formularios. Ahora deberías tener el conocimiento que necesitas para integrar formularios en tus sitios web para que puedas empezar a recoger datos.

Gracias por leer, y sigue codificando.

4.5/5 - (4 votos)