HTML - Control de formularios

-

Tipos de Controles de Formulario

HTML ofrece varios tipos de controles de formulario que permiten a los usuarios interactuar con formularios web e ingresar datos. Veamos los diferentes tipos de controles de formulario disponibles.

Campos de Entrada

Los campos de entrada son el tipo más común de control de formulario. Permiten a los usuarios ingresar varios tipos de datos, como texto, números y fechas. Aquí están algunos campos de entrada comúnmente utilizados:

Tipo de Campo de Entrada Descripción Elemento HTML
Texto Usado para ingresar texto plano, como nombres, direcciones o comentarios html <input type="text">
Contraseña Similar a los campos de entrada de texto, pero los caracteres ingresados se ocultan por razones de seguridad html <input type="password">
Correo electrónico Diseñado específicamente para ingresar direcciones de correo electrónico, con validación básica para verificar la presencia del símbolo "@" y un nombre de dominio html <input type="email">
Número Usado para ingresar valores numéricos, a menudo con validación integrada para restringir la entrada a solo números html <input type="number">
Fecha Permite a los usuarios ingresar fechas usando un selector de fecha o escribiendo la fecha manualmente html <input type="date">

Casillas de Verificación y Botones de Radio

Las casillas de verificación y los botones de radio se usan cuando los usuarios necesitan seleccionar una o más opciones de un grupo de opciones.

Tipo de Control Descripción Elemento HTML
Casilla de Verificación Permite a los usuarios seleccionar múltiples opciones de un grupo, cada casilla funciona independientemente html <input type="checkbox">
Botón de Radio Se usa cuando los usuarios necesitan seleccionar una sola opción de un grupo de opciones mutuamente excluyentes, los botones de radio con el mismo atributo name se agrupan html <input type="radio">

Listas Desplegables y Cuadros de Selección

Las listas desplegables y los cuadros de selección proporcionan una forma para que los usuarios elijan una o más opciones de una lista predefinida.

Tipo de Control Descripción Elemento HTML
Lista Desplegable Muestra una lista de opciones de las cuales los usuarios pueden seleccionar una, las opciones se definen usando elementos <option> dentro del elemento <select> html <select>
Grupo de Opciones Se usa para agrupar opciones relacionadas dentro de una lista desplegable, proporciona una forma de categorizar opciones y mejorar la legibilidad html <optgroup>
Selección Múltiple Al agregar el atributo multiple al elemento <select>, los usuarios pueden seleccionar múltiples opciones de la lista manteniendo presionada la tecla Ctrl (Windows) o Command (Mac) mientras hacen clic en las opciones deseadas html <select multiple>

Botones

Los botones se utilizan para activar acciones o enviar formularios.

Tipo de Botón Descripción Elemento HTML
Enviar Se usa para enviar datos del formulario al servidor para su procesamiento html <input type="submit"> o html <button type="submit">
Restablecer Se usa para restablecer los campos del formulario a sus valores predeterminados html <input type="reset"> o html <button type="reset">
Botón Se puede usar para crear botones en los que se puede hacer clic que pueden realizar acciones personalizadas usando JavaScript html <button>

Áreas de Texto

Las áreas de texto se utilizan para ingresar texto de varias líneas.

Tipo de Control Descripción Elemento HTML
Área de Texto Proporciona un área de entrada más grande para que los usuarios ingresen varias líneas de texto, como comentarios o descripciones html <textarea>

Los atributos rows y cols se pueden usar para establecer las dimensiones iniciales del área de texto. El atributo rows establece el número de líneas de texto visibles, mientras que el atributo cols establece el ancho promedio de caracteres. Las áreas de texto son redimensionables por defecto, permitiendo a los usuarios ajustar el tamaño del área de entrada. El comportamiento de redimensionamiento se puede controlar usando propiedades CSS como resize.

Etiquetado de Controles de Formulario

El etiquetado de controles de formulario es una parte importante de la creación de formularios fáciles de usar y accesibles en HTML. Las etiquetas proporcionan una descripción clara del propósito de cada control del formulario, facilitando su comprensión e interacción.

Elementos de Etiqueta

El elemento <label> se utiliza para crear una etiqueta para un control de formulario. Proporciona una descripción de texto que se asocia con un control de formulario específico, como un campo de entrada, una casilla de verificación o un botón de opción. El texto de la etiqueta ayuda a comprender el propósito del control del formulario y qué información se debe ingresar o seleccionar.

Consejo: Uso del elemento <label>

<label for="name">Nombre:</label>
<input type="text" id="name" name="name">

En este ejemplo, el elemento <label> se utiliza para crear una etiqueta para el campo de entrada de texto. El atributo for del elemento <label> se establece con el atributo id del control de formulario asociado, estableciendo una conexión entre la etiqueta y el campo de entrada.

Asociación de Etiquetas con Controles de Formulario

Para asociar una etiqueta con un control de formulario, puedes usar el atributo for del elemento <label>. El valor del atributo for debe coincidir con el atributo id del control de formulario correspondiente. Esto crea una conexión lógica entre la etiqueta y el control del formulario, permitiendo hacer clic en la etiqueta para enfocar el control asociado.

Consejo: Asociación de una etiqueta con una casilla de verificación

<input type="checkbox" id="terms" name="terms">
<label for="terms">Acepto los términos y condiciones</label>

En este caso, al hacer clic en el texto de la etiqueta "Acepto los términos y condiciones" se alternará el estado de la casilla de verificación asociada.

Importancia del Etiquetado para la Accesibilidad

El etiquetado de controles de formulario es importante para la accesibilidad. Ayuda a comprender el propósito y contexto de cada control de formulario al usar tecnologías de asistencia, como lectores de pantalla. Cuando una etiqueta está correctamente asociada con un control de formulario, las tecnologías de asistencia pueden transmitir el texto de la etiqueta, facilitando la navegación e interacción con el formulario.

Además del atributo for, también puedes anidar el control de formulario dentro del elemento <label>. Esto asocia implícitamente la etiqueta con el control anidado, incluso sin usar el atributo for. Sin embargo, usar el atributo for sigue siendo considerado una buena práctica para una asociación explícita.

Consejo: Anidación de un botón de opción dentro de una etiqueta

<label>
  <input type="radio" name="gender" value="male"> Masculino
</label>
<label>
  <input type="radio" name="gender" value="female"> Femenino
</label>

Al etiquetar correctamente los controles de formulario, haces que tus formularios sean más accesibles y fáciles de usar para todos los usuarios, incluidos aquellos que dependen de tecnologías de asistencia.

Agrupación de Controles de Formulario

Al crear formularios complejos con múltiples controles relacionados, agruparlos puede ayudar a mejorar la organización y claridad. HTML proporciona los elementos <fieldset> y <legend> para agrupar y etiquetar controles de formulario relacionados.

Elementos Fieldset

El elemento <fieldset> agrupa controles de formulario relacionados dentro de un formulario. Crea una agrupación visual y lógica de controles de formulario, haciendo que el formulario sea más estructurado y fácil de entender. El elemento <fieldset> contiene los controles agrupados y también puede incluir un título o etiqueta para el grupo usando el elemento <legend>.

Consejo: Información de Contacto

<form>
  <fieldset>
    <legend>Información de Contacto</legend>
    <label for="name">Nombre:</label>
    <input type="text" id="name" name="name"><br>
    <label for="email">Correo electrónico:</label>
    <input type="email" id="email" name="email"><br>
    <label for="phone">Teléfono:</label>
    <input type="tel" id="phone" name="phone">
  </fieldset>
</form>

Elementos Legend

El elemento <legend> proporciona un título o etiqueta para un <fieldset>. Aparece como un encabezado dentro del fieldset y describe los controles de formulario agrupados. El elemento <legend> debe ser el primer hijo del elemento <fieldset>.

Consejo: Dirección de Envío

<fieldset>
  <legend>Dirección de Envío</legend>
  <label for="address">Dirección:</label>
  <input type="text" id="address" name="address"><br>
  <label for="city">Ciudad:</label>
  <input type="text" id="city" name="city"><br>
  <label for="zip">Código Postal:</label>
  <input type="text" id="zip" name="zip">
</fieldset>

Agrupación de Controles de Formulario Relacionados

Al agrupar controles de formulario usando <fieldset>, considera la relación lógica entre los controles. Agrupa los controles que están estrechamente relacionados o pertenecen a la misma categoría. Esto ayuda a organizar el formulario y facilita la comprensión y el llenado por parte de los usuarios.

Algunos ejemplos comunes de agrupación de controles de formulario relacionados incluyen:

Grupo Controles Relacionados
Información personal Nombre, correo electrónico, teléfono
Detalles de dirección Calle, ciudad, estado, código postal
Información de pago Número de tarjeta de crédito, fecha de vencimiento, CVV
Opciones de envío Método de entrega, dirección de envío

Al agrupar controles de formulario relacionados con <fieldset> y proporcionar etiquetas claras con <legend>, mejoras la usabilidad y legibilidad de tus formularios. Guía a los usuarios a través del formulario y facilita la comprensión de la información requerida.

Recuerda usar etiquetas apropiadas para cada control de formulario dentro del fieldset para mantener la accesibilidad y usabilidad.

Atributos de control de formularios

HTML proporciona varios atributos que se pueden usar para agregar funcionalidad y comportamiento a los controles de formulario. Estos atributos permiten establecer propiedades y restricciones adicionales para los controles de formulario, mejorando la experiencia del usuario y la validación de datos. Veamos algunos atributos de control de formulario comúnmente utilizados.

Atributo Required

El atributo required se utiliza para indicar que un control de formulario debe ser completado antes de que el formulario pueda ser enviado. Cuando un control de formulario tiene el atributo required, el navegador impedirá que el formulario se envíe si el control se deja vacío o no cumple con los criterios de validación especificados.

Consejo: Atributo Required

<label for="name">Nombre:</label>
<input type="text" id="name" name="name" required>

En este ejemplo, el campo de entrada de texto para el nombre está marcado como obligatorio. Si intentas enviar el formulario sin ingresar un valor en este campo, el navegador mostrará un mensaje de error y detendrá el envío del formulario hasta que se proporcione un valor.

Atributo Disabled

El atributo disabled se utiliza para desactivar un control de formulario, haciéndolo no interactivo y no editable. Los controles de formulario desactivados generalmente aparecen en gris y no se pueden enfocar, hacer clic o modificar.

Consejo: Atributo Disabled

<label for="username">Nombre de usuario:</label>
<input type="text" id="username" name="username" disabled>

En este caso, el campo de entrada de texto para el nombre de usuario está desactivado. No podrás interactuar ni cambiar el valor de este campo.

Los controles de formulario desactivados no se envían como parte de los datos del formulario cuando este se envía. Se omiten durante el procesamiento del formulario.

Atributo Readonly

El atributo readonly se utiliza para hacer que un control de formulario sea de solo lectura, lo que significa que puedes ver su valor pero no puedes cambiarlo. Los controles de formulario de solo lectura aún pueden recibir el foco y pueden incluirse en el envío del formulario.

Consejo: Atributo Readonly

<label for="email">Correo electrónico:</label>
<input type="email" id="email" name="email" value="usuario@ejemplo.com" readonly>

En este ejemplo, el campo de entrada de correo electrónico está marcado como de solo lectura. Puedes ver el valor preestablecido pero no puedes editarlo.

Los controles de formulario de solo lectura son útiles cuando quieres mostrar valores preestablecidos o calculados que no deben ser modificados por el usuario.

Atributo Placeholder

El atributo placeholder se utiliza para proporcionar un texto de sugerencia o ejemplo dentro de un control de formulario cuando está vacío. El texto del placeholder desaparece cuando empiezas a escribir o el control de formulario recibe el foco.

Consejo: Atributo Placeholder

<label for="search">Buscar:</label>
<input type="text" id="search" name="search" placeholder="Ingresa término de búsqueda...">

En este caso, el campo de entrada de texto para la búsqueda tiene un texto de placeholder que dice "Ingresa término de búsqueda...". Este texto se muestra dentro del campo de entrada cuando está vacío, proporcionando una pista visual sobre la entrada esperada.

Los placeholders deben usarse como una sugerencia complementaria y no deben reemplazar el etiquetado adecuado de los controles de formulario. Son útiles para proporcionar orientación adicional o ejemplos, pero no deben ser la única forma de transmitir el propósito de un control de formulario.

Validación de Formularios

La validación de formularios verifica la entrada del usuario para asegurarse de que sigue el formato esperado, cumple con los criterios y está libre de errores o datos maliciosos. Es una parte importante del diseño de formularios web y ayuda a mantener la integridad y seguridad de los datos. HTML proporciona funciones de validación de formularios integradas que pueden verificar la entrada del usuario en el lado del cliente antes de enviar el formulario al servidor.

La validación del lado del cliente ocurre en el navegador del usuario. Utiliza atributos de validación de formularios HTML y JavaScript para verificar los datos del formulario antes de enviarlos al servidor. La validación del lado del cliente proporciona retroalimentación instantánea a los usuarios sobre cualquier error o problema con su entrada, permitiéndoles corregir los datos antes de enviar el formulario. Esto mejora la experiencia del usuario y reduce la carga en el servidor al detectar errores comunes temprano.

Sin embargo, la validación del lado del cliente no es suficiente por sí sola. Puede ser evitada o manipulada por los usuarios. La validación del lado del servidor también es necesaria para asegurarse de que los datos enviados sean válidos y seguros. La validación del lado del servidor ocurre en el servidor después de que se envía el formulario. Verifica nuevamente los datos del formulario y realiza una validación más exhaustiva, como comprobar contra una base de datos o aplicar reglas de negocio complejas.

HTML ofrece varios atributos de validación que se pueden agregar a los controles de formulario para especificar reglas de validación:

Atributo Descripción
required Especifica que un control de formulario debe completarse antes de que se pueda enviar el formulario
pattern Especifica un patrón de expresión regular que debe coincidir con el valor del control del formulario
min y max Especifica los valores mínimo y máximo para los controles de formulario numéricos
minlength y maxlength Especifica la longitud mínima y máxima del valor de entrada
step Especifica los intervalos de números legales para los controles de formulario numéricos

Consejo: Uso de atributos de validación

<label for="username">Nombre de usuario:</label>
<input type="text" id="username" name="username" required minlength="4" maxlength="20">

<label for="email">Correo electrónico:</label>
<input type="email" id="email" name="email" required>

<label for="age">Edad:</label>
<input type="number" id="age" name="age" min="18" max="120">

El campo de entrada del nombre de usuario es obligatorio y debe tener una longitud entre 4 y 20 caracteres. El campo de entrada del correo electrónico es obligatorio y debe ser una dirección de correo electrónico válida. El campo de entrada de la edad debe ser un número entre 18 y 120.

Cuando se envía un formulario, el navegador verifica los controles del formulario contra las reglas de validación especificadas. Si no se sigue alguna de las reglas, el navegador muestra un mensaje de error y detiene el envío del formulario. Los usuarios pueden entonces corregir su entrada y volver a enviar el formulario.

Además de los atributos de validación integrados en HTML, también puedes usar JavaScript para realizar una validación más compleja o un manejo de errores personalizado. JavaScript puede acceder a los controles del formulario, verificar sus valores y mostrar mensajes de error personalizados o realizar lógica de validación adicional.

Recuerda, aunque la validación del lado del cliente mejora la experiencia del usuario y detecta errores comunes, siempre debe combinarse con la validación del lado del servidor para garantizar la seguridad e integridad de los datos enviados.

Estilizando Controles de Formulario

Los controles de formulario se pueden estilizar usando CSS para mejorar su apariencia y que coincidan con el diseño de tu sitio web. CSS te permite cambiar el aspecto de los controles de formulario para hacerlos visualmente atractivos y coherentes con la imagen de marca de tu sitio web. Aquí hay algunas formas de estilizar los controles de formulario usando CSS.

Aplicando CSS a los Controles de Formulario

Para aplicar estilos CSS a los controles de formulario, puedes usar selectores CSS para dirigirte a elementos de formulario específicos. Puedes seleccionar controles de formulario basándote en su tipo, clase, ID u otros atributos. Aquí hay algunos ejemplos de selectores CSS para controles de formulario:

Consejo: Selectores CSS para controles de formulario

/* Seleccionando todos los elementos input */
input {
  /* Estilos CSS */
}

/* Seleccionando un tipo de input específico */
input[type="text"] {
  /* Estilos CSS */
}

/* Seleccionando un control de formulario con una clase específica */
.form-control {
  /* Estilos CSS */
}

/* Seleccionando un control de formulario con un ID específico */
#username {
  /* Estilos CSS */
}

Una vez que hayas seleccionado los controles de formulario, puedes aplicar varias propiedades CSS para estilizarlos. Algunas propiedades CSS comunes utilizadas para estilizar controles de formulario incluyen:

Propiedad CSS Descripción
width y height Establecen el tamaño del control de formulario
padding Añade espacio dentro del control de formulario
border Establece el estilo, ancho y color del borde
background-color Establece el color de fondo del control de formulario
color Establece el color del texto dentro del control de formulario
font-family y font-size Establecen la familia y el tamaño de la fuente para el texto del control de formulario

Consejo: Estilizando elementos input

input[type="text"] {
  width: 200px;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 16px;
}

Pseudo-clases para Estados de Controles de Formulario

CSS proporciona pseudo-clases que te permiten estilizar controles de formulario basándote en sus estados. Las pseudo-clases son palabras clave añadidas a los selectores para especificar un estado especial de un elemento. Algunas pseudo-clases comúnmente utilizadas para controles de formulario son:

Pseudo-clase Descripción
:focus Aplica estilos cuando el control de formulario tiene el foco (se está interactuando con él)
:valid Aplica estilos cuando el valor del control de formulario es válido según sus reglas de validación
:invalid Aplica estilos cuando el valor del control de formulario es inválido según sus reglas de validación
:disabled Aplica estilos cuando el control de formulario está deshabilitado
:read-only Aplica estilos cuando el control de formulario es de solo lectura

Consejo: Pseudo-clases para controles de formulario

input[type="text"]:focus {
  outline: none;
  border-color: blue;
}

input[type="email"]:valid {
  border-color: green;
}

input[type="number"]:invalid {
  border-color: red;
}

input[type="text"]:disabled {
  background-color: #eee;
  cursor: not-allowed;
}

Personalizando la Apariencia de los Controles de Formulario

CSS te permite cambiar la apariencia de los controles de formulario más allá de los estilos predeterminados del navegador. Puedes usar propiedades y técnicas CSS para crear controles de formulario visualmente atractivos y únicos que coincidan con el diseño de tu sitio web.

Consejo: Diseño personalizado de casilla de verificación

input[type="checkbox"] {
  appearance: none;
  width: 20px;
  height: 20px;
  border: 2px solid #ccc;
  border-radius: 4px;
  background-color: #fff;
  transition: background-color 0.3s;
}

input[type="checkbox"]:checked {
  background-color: #007bff;
  border-color: #007bff;
}
select {
  width: 200px;
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  background-color: #fff;
  appearance: none;
  background-image: url("arrow-down.svg");
  background-repeat: no-repeat;
  background-position: right 10px center;
}

select:focus {
  outline: none;
  border-color: blue;
}