DESARROLLO FRONTEND AVANZADO

Formularios HTML5: Lección Técnica Definitiva

Inputs, validaciones nativas y envío de datos

Domina los formularios HTML5: estructura, métodos GET/POST, inputs semánticos y validaciones nativas. Aprende accesibilidad y optimización móvil para una mejor experiencia.

1

Formularios HTML: El Punto de Entrada de Datos

Los formularios HTML permiten que los usuarios interactúen con una web enviando información al servidor. Son fundamentales para registros, inicios de sesión, búsquedas y compras online.

<!-- Un formulario define una zona interactiva para capturar datos -->
<form>
  <!-- Aquí dentro vivirán todos los campos -->
</form>
Esquema de interacción usuario-formulario-servidor
Los formularios conectan al usuario con la lógica del sistema mediante el envío de datos.
2

La Etiqueta <form>: El Contenedor Principal

La etiqueta <form> define el contexto del formulario. Controla a dónde se envían los datos, cómo se envían y qué tipo de información se transmite.

<!-- action indica la URL que recibirá los datos -->
<form action="/api/save"
  <!-- Inputs y botones van aquí -->
</form>
Estructura básica de la etiqueta form en HTML
La etiqueta form envuelve todos los campos que participan del envío.
3

Action y Method: Cómo Viajan los Datos

Los atributos action y method definen el destino y la forma en que se envía la información del formulario al servidor.

<!-- GET envía los datos visibles en la URL -->
<form method="GET">
</form>

<!-- POST envía los datos de forma segura en el body -->
<form method="POST">
</form>
Comparación visual entre método GET y POST
POST es el método recomendado para datos sensibles como contraseñas o registros.
4

El atributo name: el dato que viaja al servidor

El atributo name identifica cada dato enviado por un formulario. Es el nombre de la variable que recibe el backend. Sin name, el valor ingresado no se envía.

<!-- Este input SÍ se envía porque tiene name -->
<input type="text" name="usuario">

<!-- Este input NO se envía porque no tiene name -->
<input type="text" placeholder="Nombre">
Ejemplo de input con y sin atributo name
El atributo name es obligatorio para que el backend reciba los datos.
5

Qué datos se envían en un formulario

No todos los inputs envían información. El envío depende de su estado y atributos como name, disabled, readonly o checked.

<!-- Este valor NO se envía -->
<input type="text" name="codigo" value="ABC" disabled>

<!-- Este valor SÍ se envía -->
<input type="text" name="id" value="user_123" readonly>

<!-- Checkbox solo se envía si está marcado -->
<input type="checkbox" name="terminos" checked>
Inputs enviados y no enviados en un formulario
Disabled excluye el dato del envío; readonly no.
6

Inputs Básicos: Texto, Contraseña y Email

Los inputs básicos permiten capturar información textual. Cada tipo agrega validaciones y comportamientos específicos.

<!-- Campo de texto libre -->
<input type="text" name="user">

<!-- Campo de contraseña: oculta los caracteres -->
<input type="password" name="pass">

<!-- Campo email: valida formato y mejora UX móvil -->
<input type="email" name="mail">
Inputs de texto, contraseña y email
Cada tipo de input agrega validaciones automáticas del navegador.
7

Inputs Modernos: Mejor Experiencia en Móviles

HTML5 incorpora inputs semánticos que adaptan el teclado en dispositivos móviles, mejorando la experiencia del usuario.

<!-- Teclado numérico para teléfonos -->
<input type="tel" name="telefono">

<!-- Selector de fecha nativo del sistema -->
<input type="date" name="fecha_nacimiento">
Publicidad
html-css-online-course-responsive-web-design-from-scratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertos
Precio $150000 ARG Oferta especial
Ver próximas fechas
8

Textarea: Textos Largos

El elemento textarea se usa para ingresar textos extensos como comentarios, descripciones o mensajes.

<!-- rows define la cantidad de líneas visibles -->
<textarea name="bio" rows="5" placeholder="Cuéntanos sobre ti...">
</textarea>
Campo textarea para textos largos
Textarea es ideal para contenido multilínea.
9

Radio y Checkbox: Opciones de Selección

Los inputs radio permiten una única elección, mientras que los checkbox permiten múltiples selecciones independientes.

<!-- Radios con mismo name forman un grupo excluyente -->
<input type="radio" name="envio" value="express"> Rápido
<input type="radio" name="envio" value="normal"> Normal

<!-- Checkbox permite selección múltiple -->
<input type="checkbox" name="newsletter" value="si"> Suscribirme
Ejemplo de radios y checkbox
El atributo value es el dato que se envía al servidor.
10

Select y Option: Menús Desplegables

El elemento select permite elegir una opción de una lista desplegable, ideal para listas largas.

<!-- select agrupa opciones -->
<select name="pais">
  <!-- option representa cada ítem -->
  <option value="arg">Argentina</option>
  <option value="col" selected>Colombia</option>
  <option value="mex">México</option>
</select>
Menú desplegable HTML con select
Select reduce espacio y ordena opciones.
11

El Atributo Value Según el Contexto

El atributo value cumple funciones distintas dependiendo del tipo de input.

<!-- Valor inicial de un input -->
<input type="text" value="Texto por defecto">

<!-- Texto visible en un botón -->
<input type="submit" value="Enviar">

<!-- Valor técnico enviado al backend -->
<input type="checkbox" value="acepta">
Publicidad
html-css-online-course-responsive-web-design-from-scratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertos
Precio $150000 ARG Oferta especial
Ver próximas fechas
12

El atributo value en opciones seleccionables

En radios y checkbox, el atributo value define el dato técnico que se envía al servidor cuando el elemento está seleccionado.

<form>

  <!-- Ambas opciones comparten el mismo name -->
  <input type="radio" name="turno" value="manana"> Mañana
  <input type="radio" name="turno" value="tarde"> Tarde

</form>
13

Labels y Accesibilidad Web

Los label mejoran accesibilidad, SEO y usabilidad. Cada input debe estar vinculado a su label.

<!-- Label vinculado al input por id -->
<label for="nombre">Nombre</label>

<input type="text" id="nombre" name="nombre">
14

Label vs Placeholder: roles distintos

El label describe el campo de forma semántica y accesible. El placeholder es solo una ayuda visual temporal. Nunca deben reemplazarse entre sí.

<!-- Label: descripción real del campo -->
<label for="email">Correo electrónico</label>

<!-- Placeholder: ayuda visual dentro del input -->
<input type="email" id="email" name="email" placeholder="usuario@email.com">
Comparación entre label y placeholder en formularios
El label es obligatorio para accesibilidad y SEO.
15

Fieldset y Legend: Agrupación Visual

Fieldset y legend permiten agrupar campos relacionados, mejorando la claridad en formularios largos.

<!-- Agrupa campos relacionados -->
<fieldset>
  <legend>Datos de Facturación</legend>
  <input type="text" placeholder="Dirección">
  <input type="text" placeholder="Ciudad">
</fieldset>
Fieldset agrupando inputs
Ideal para dividir formularios extensos en secciones.
16

Readonly vs Disabled

Readonly y disabled parecen similares, pero tienen un comportamiento muy distinto al enviar datos.

<!-- Disabled no se envía al servidor -->
<input type="text" value="XYZ" disabled>

<!-- Readonly sí se envía, pero no se puede editar -->
<input type="text" value="user_123" readonly>
17

Validaciones HTML5 Sin JavaScript

HTML5 permite validar datos directamente desde el navegador antes de enviarlos al servidor.

<!-- Campo obligatorio con mínimo -->
<input type="number" min="18" required>

<!-- pattern valida formato con RegEx -->
<input type="text" pattern="[A-Z]+" title="Solo mayúsculas">
Validaciones nativas HTML5
Las validaciones mejoran UX pero no reemplazan al backend.
18

Botones HTML: Submit, Reset y <Button>

Los botones definen las acciones del formulario y su comportamiento depende del atributo type.

<!-- Envía el formulario -->
<button type="submit">Enviar</button>

<!-- Limpia todos los campos -->
<button type="reset">Borrar</button>

<!-- Botón genérico para JavaScript -->
<button type="button">Acción</button>
Tipos de botones HTML
Submit es el botón por defecto en formularios.
19

El atributo value en botones HTML

En los botones creados con input, el atributo value define el texto visible que muestra el navegador. Su función depende del tipo de botón utilizado.

<form>

  <!-- Botón que envía el formulario -->
  <input type="submit" value="Enviar formulario">

  <!-- Botón que limpia todos los campos -->
  <input type="reset" value="Limpiar">

  <!-- Botón sin acción por defecto -->
  <input type="button" value="Sin acción">

</form>
Botones HTML con atributo value
El texto del botón se define mediante el atributo value.
20

Enctype: Envío de Archivos

Cuando un formulario envía archivos (imágenes, PDFs), es obligatorio cambiar el tipo de codificación usando el atributo enctype.

<!-- multipart/form-data permite enviar archivos -->
<form method="POST" enctype="multipart/form-data">
  <!-- Input para seleccionar un archivo -->
  <input type="file" name="avatar">
</form>
Formulario HTML con subida de archivos
Sin multipart/form-data, los archivos no se envían correctamente.
21

Formulario HTML completo y funcional

Ejemplo real de un formulario correctamente estructurado, con atributos, labels, inputs y envío de datos.

<form action="/registro" method="POST">

  <!-- Campo email -->
  <label for="email">Email</label>
  <input type="email" id="email" name="email" required>

  <!-- Campo contraseña -->
  <label for="password">Contraseña</label>
  <input type="password" id="password" name="password" required>

  <!-- Botón de envío -->
  <button type="submit">Registrarse</button>

</form>

Lección anterior

Ejemplo de listas HTML ordenadas, desordenadas y anidadas
Las listas en HTML permiten organizar información relacionada de forma clara, jerárquica y accesible.

Listas en HTML

Organiza contenido con listas HTML. Domina ul, ol y dl para crear menús y estructuras claras. Aprende anidamiento y semántica para una web accesible y profesional.

Comenzar Lección

Lección actual

Interfaz de formulario moderno con validaciones y teclado móvil activo
Vista previa de interfaces de formularios optimizadas para validación en tiempo real y usabilidad móvil.

Formularios HTML5: Lección Técnica Definitiva

Domina los formularios HTML5: estructura, métodos GET/POST, inputs semánticos y validaciones nativas. Aprende accesibilidad y optimización móvil para una mejor experiencia.

Lección actual

Lección siguiente

Estructura de tabla HTML moderna
Ilustración de una cuadrícula de datos estructurada semánticamente.

Tablas en HTML: Estructura y Semántica Profesional

Crea tablas HTML semánticas y accesibles. Aprende a usar thead, tbody, combinar celdas y estructurar datos correctamente para evitar errores comunes de maquetación.

Comenzar Lección
¿Qué pasa si no pongo el atributo `action`?El navegador enviará los datos a la misma URL actual. Es el comportamiento por defecto y se usa mucho en aplicaciones que procesan datos en el mismo archivo o con JS.
¿Por qué `type="number"` es mejor que `text` para edades?Porque en celulares abre automáticamente el teclado numérico, facilitando la escritura. Además, permite usar validaciones como `min` y `max`.
¿Cuál es la diferencia crítica entre `readonly` y `disabled`?`disabled` NO envía el dato al servidor (el campo se ignora). `readonly` impide la edición pero SÍ envía el dato. Usa `readonly` si necesitas que el backend reciba esa información.
¿Para qué sirve el atributo `step` en inputs numéricos?Controla los saltos de número. `step="0.5"` permite decimales (1.5, 2.0). Por defecto es 1 (solo enteros).
¿Por qué mis radio buttons se seleccionan todos a la vez?Porque tienen diferentes valores en el atributo `name`. Para que sean excluyentes (grupo), deben compartir exactamente el mismo `name`.
¿El atributo `placeholder` sirve como etiqueta accesible?No. El placeholder desaparece al escribir y muchos lectores de pantalla lo ignoran. Siempre debes usar una etiqueta `<label>` visible o atributos `aria-label`.
¿Cómo evito que el navegador autocomplete un campo?Usando `autocomplete="off"`. Es útil para datos sensibles únicos (como códigos de verificación o captchas) que no deberían guardarse.
¿Qué es `multipart/form-data` y cuándo usarlo?Es el tipo de codificación obligatoria para enviar archivos (imágenes, documentos). Si no lo pones en el `enctype` del form, el archivo no llegará al servidor.
¿Puedo validar con expresiones regulares en HTML?Sí, usando el atributo `pattern`. Por ejemplo, `pattern="[0-9]{4}"` obliga a ingresar exactamente 4 dígitos.
¿Es seguro confiar solo en la validación HTML (`required`)?Jamás. Un usuario avanzado puede modificar el HTML y quitar esas restricciones. La validación HTML es para UX; la seguridad real siempre debe estar en el servidor (Backend).