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;
}