Lección 7: Formularios
Hasta el momento los visitantes disponen de una posición pasiva ya que la información viaja unilateralmente del hosting a sus equipos, no disponene de herramientas para invertir los roles: pueden leer pero no responder. La solución es usar formularios, unos campos interactivos con la capacidad de recoger información, proporcionada por el usuario, para enviarla al servidor. Lo que ocurra a continuación con esos datos no nos atañe, no es labor del Diseñador Web. Tal es la separación de responsabilidad que incluso existe una especialización encargada de procesar y almacenar la información: Back-End.
Sin embargo hay otras tareas sumamente importantes que debemos prestar especial atención:
- Dar la estructura adecuada.
- Plantear un flujo ordenado y autoexplicativo.
- Entretener al visitante.
- Trabajar la accesibilidad.
Todo formulario dispone de 4 estados.
- Presentación: Habitualmente se deja vacío, con alguna ayuda visual en forma de texto o iconografía que explique cada sección.
- Validación: Si un campo no cumple el formato deseados debemos informar y guiar para que el usuario pueda ajustarlo. Un recurso recurrente es mostrar un texto rojo con una breve explicación y un ejemplo.
- Enviado sin problemas: Al pulsar en el botón de enviar no ha saltado una validación y el servidor web nos confirma que ha recibido la información correctamente. Se informa al usuario y, si es posible, se lleva a otra sección del sitio.
- Enviado con problemas: ¡Ups! Cuando se ha enviado la información ha ocurrido lo inimaginable, el servidor web nos indica que ha fallado por alguna razón al procesar la información. Debemos avisar al usuario y agachamos la cabeza en señal de disculpas. Lo recomendado sería dar una opación alternativa, ¿un teléfono? ¿un email?
Contenedor
Todo formulario debe estar envuelta en la siguiente etiqueta.
Etiqueta | <form> |
Descripción | Contenedor de elementos interactivos que otorgan al visitante la opción de enviar información. |
Atributos | action : Ruta donde se enviará la información.enctype : Formato del contenido. Sus opciones son application/x-www-form-urlencoded , multipart/form-data y text/plain method : Método HTTP que usará el navegador para enviar la información. Sus opciones son: get y post .autocomplete : Transmite al navegador si puede o no usar su autocompletador. Sus opciones son on y off novalidate : Indica si debe ser validado o no la información antes de ser enviado. |
Tipo | Bloque |
<form>
<!-- Campos interactivos -->
</form>
En el interior usaremos diversas etiquetas siendo cada una especializada en un ámbito.
Insertar texto
Etiqueta | <label> |
Descripción | Trabaja junto a <input> . Describe su contenido. |
Atributos | for : Vincula con el atributo id de un input . |
Tipo | En línea |
Etiqueta | <input> |
Descripción | Campo de formulario para la inserción de contenido como puede ser texto. |
Atributos | type : Define el tipo.name : Nombre con el cual se representará al llegar al servidor (siempre debe estar presente).value : Contenido o texto.required : Obliga a que sea rellenado.placeholder : Texto informativo.disabled : Desactiva el elemento, aunque es visible. |
Tipo | En línea |
Los valores más populares de type
son:
- button
- checkbox
- color
- date
- file
- number
- password
- radio
- range
- reset
- search
- submit
- text
<label>
¿Cual es tu cadena de radio favorita?
<input type="text" name="cadenaRadio">
</label>
Como alternativa, si no pudieras anidar las etiquetas, puedes vincularlos con los atributos for
y id
.
<label for="miRadio">¿Cual es tu cadena de radio favorita?</label>
<input id="miRadio" type="text" name="cadenaRadio">
Etiqueta | <textarea> |
Descripción | Campo de texto para varias líneas |
Atributos | Globales |
Tipo | En línea |
<label>
Anotaciones:
<textarea name="anotaciones"></textarea>
</label>
Seleccionar
Etiqueta | <select> |
Descripción | Contenedor de opciones. |
Atributos | Globales |
Tipo | En línea |
Etiqueta | <option> |
Descripción | Opción del selector. |
Atributos | value : Valor que será enviado.disabled : No deja ser seleccionable.selected : Selecciona la opción. |
Tipo | En línea |
<select name="mascota">
<option value="0">Perro</option>
<option value="1">Gato</option>
<option value="2">Hamster</option>
<option value="3">Conejo</option>
<option value="4">Tortuga</option>
</select>
Un truco para disponer de un título que después no pueda ser nuevamente seleccionable es utilizar en el mismo <option>
el atributo disabled
y selected
.
<select name="mascota">
<option value="" aria-label="mascota" disabled selected>¿Qué mascota tienes?</option>
<option value="0">Perro</option>
<option value="1">Gato</option>
<option value="2">Hamster</option>
<option value="3">Conejo</option>
<option value="4">Tortuga</option>
</select>
Botones
Etiqueta | <button> |
Descripción | Lanza eventos sobre el formulario. |
Atributos | type : “submit” para enviar el formulario, “reset” para restablecer los campos o “button” para lanzar funcionalidades en Javascript. |
Tipo | En línea |
<button type="submit">
Enviar
</button>
Es más sencillo dar estilos a <button>
que a <input type="button">
ya que puedes incluir etiquetas en el anidamiento como por ejemplo <img>
y usar pseudo-elementos (::after
, ::before
…).
Agrupar campos
Etiqueta | <fieldset> |
Descripción | Sección de campos a agrupar |
Atributos | Globales |
Tipo | En línea |
Etiqueta | <legend> |
Descripción | Título de grupo |
Atributos | Globales |
Tipo | En línea |
<fieldset>
<!-- Titulo de Fieldset -->
<legend>Reserva de entrada</legend>
<label>
Nombre y apellidos
<input type="text" name="nombre">
</label>
<label>
Número de asientos
<input type="number" name="numero">
</label>
<button type="submit">Pagar</button>
</fieldset>
Actividad 1
Crea un formulario de contacto con los campos que creas oportunos. La información que será enviada es la siguiente.
- Nombre
- Mensaje
Actividad 2
Crea un formulario, con los campos que creas oportunos, para una tienda la cual pueda vender sus altavoces. La información que será enviada es la siguiente.
- Modelo: R4, R5 o SR1.
- Potencia máxima: entre 50 y 100.
- ¿Bluetooth?
- Color.
Actividad 3
Crea un formulario, con los campos que creas oportunos, para que un usuario pueda registrarse en tu red social.
Actividad 4
Crea un formulario, con los campos que creas oportunos, para buscar cámaras de fotos.
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
¿Me invitas a un café? ☕
Puedes hacerlo usando el terminal.
ssh customer@andros.dev -p 5555
Comentarios
Nuevo comentario
Nueva replica {{ formatEllipsisAuthor(replyComment.author) }}
Escribe el primer comentario
{{ comments.length }} comentarios