Formularios
Last updated
Last updated
Los formularios web son uno de los principales puntos de interacciΓ³n entre un usuario y un sitio web o aplicaciΓ³n. Los formularios permiten a los usuarios la introducciΓ³n de datos, que generalmente se envΓan a un servidor web para su procesamiento y almacenamiento, o se usan en el lado del cliente para provocar de alguna manera una actualizaciΓ³n inmediata de la interfaz (por ejemplo, se aΓ±ade otro elemento a una lista, o se muestra u oculta una funciΓ³n de interfaz de usuario).
El HTML de un formulario web estΓ‘ compuesto por uno o mΓ‘s controles de formulario (a veces llamados widgets), ademΓ‘s de algunos elementos adicionales que ayudan a estructurar el formulario general; a menudo se los conoce como formularios HTML. Los controles pueden ser campos de texto de una o varias lΓneas, cajas desplegables, botones, casillas de verificaciΓ³n o botones de opciΓ³n, y se crean principalmente con el elemento <input>
, aunque hay algunos otros elementos que tambiΓ©n hay que conocer.
Los controles de formulario tambiΓ©n se pueden programar para forzar la introducciΓ³n de formatos o valores especΓficos (validaciΓ³n de formulario), y se combinan con etiquetas de texto que describen su propΓ³sito para los usuarios con y sin discapacidad visual.
La estructura basica de un formulario es la siguiente:
Todos los formularios comienzan con un elemento <form>
, como este:
Este elemento define formalmente un formulario. Es un elemento contenedor, como un elemento <section>
o <footer>
, pero especΓfico para contener formularios; tambiΓ©n admite algunos atributos especΓficos para la configuraciΓ³n de la forma en que se comporta el formulario. Todos sus atributos son opcionales, pero es una prΓ‘ctica estΓ‘ndar establecer siempre al menos los atributos action
y method
:
El atributo action
define la ubicaciΓ³n (URL) donde se envΓan los datos que el formulario ha recopilado cuando se validan.
El atributo method
define con quΓ© mΓ©todo HTTP se envΓan los datos (generalmente get
o post
).
<label>
, <input>
y <textarea>
Nuestro formulario de contacto no es complejo: la parte para la entrada de datos contiene tres campos de texto, cada uno con su elemento <label>
correspondiente:
El campo de entrada para el nombre es un campo de texto de una sola lΓnea.
El campo de entrada para el correo electrΓ³nico es una entrada de datos de tipo correo electrΓ³nico: un campo de texto de una sola lΓnea que acepta solo direcciones de correo electrΓ³nico.
El campo de entrada para el mensaje es <textarea>
; un campo de texto multilΓnea.
En tΓ©rminos de cΓ³digo HTML, para implementar estos controles de formulario necesitamos algo como lo siguiente:
Nota: El atributo name
es obligatorio, puesto que a la hora de enviar el formulario, es nombre de la "variable" que enviamos con la informaciΓ³n que hemos escrito. Si no le ponemos name
ese campo no existe!!!
En el elemento <input>
, el atributo mΓ‘s importante es type
. Este atributo es muy importante porque define la forma en que el elemento <input>
aparece y se comporta. Para poder relacionar cada <label>
con su correspondiente <input>
se utiliza como se puede observar for
y id
.
Id es atributo que se utilizar mucho para JavaScript
Por ΓΊltimo, pero no por ello menos importante, ten en cuenta la sintaxis de <input>
en contraposiciΓ³n con la de <textarea></textarea>
. Esta es una de las rarezas del HTML. La etiqueta <input>
es un elemento vacΓo, lo que significa que no necesita una etiqueta de cierre. El elemento <textarea>
no es un elemento vacΓo, lo que significa que debe cerrarse con la etiqueta de cierre adecuada.
Lo que introduzcas entre la etiquetas <textarea> sera el contenido que hay por defecto en el contenedor de texto.
<button>
El marcado de nuestro formulario estΓ‘ casi completo; solo necesitamos aΓ±adir un botΓ³n para permitir que el usuario envΓe sus datos una vez que haya completado el formulario. Esto se hace con el elemento <button>
; aΓ±ade lo siguiente justo encima de la etiqueta de cierre </form>
:
El elemento <button>
tambiΓ©n acepta un atributo de type
, que a su vez acepta uno de estos tres valores: submit
, reset
o button
.
Un clic en un botΓ³n submit
(el valor predeterminado) envΓa los datos del formulario a la pΓ‘gina web definida por el atributo action
del elemento <form>
.
Un clic en un botΓ³n reset
restablece de inmediato todos los controles de formulario a su valor predeterminado. Desde el punto de vista de UX, esto se considera una mala prΓ‘ctica, por lo que debes evitar usar este tipo de botones a menos que realmente tengas una buena razΓ³n para incluirlos.
Un clic en un botΓ³n button
no hace... Β‘nada! Eso suena tonto, pero es muy ΓΊtil para crear botones personalizados: puedes definir su funciΓ³n con JavaScript. No sirve para nvair formularios!
Nota: <input> tambien acepta este atribitu y de esta manera se comprotara como un boton:
<input type="submit" value="Enviar input">
Aqui tienes mass elementos que puedes implementar en to formulario para completarlo aun mas:
El elemento fieldset
representa un conjunto de controles en un formulario (form
), opcionalmente agrupados bajo un mismo nombre. Este elemento puede ser particularmente ΓΊtil en formularios grandes, donde la legibilidad y la facilidad de acceso pueden ser mejoradas mediante la segmentaciΓ³n. Lo navegadores mostrarΓ‘n normalmente un marco alrededor de los controles agrupados.
Un
<fieldset>
puede adicionalmente tener un tΓtulo o nombre, que puede ser provisto por el elementolegend
. En tal caso, el elementolegend
debe ser el primer hijo defieldset
.
El elemento meter
representa una medida dentro de un rango conocido. Este elemento, nuevo en HTML5, puede ser ΓΊtil para representar medidas en diferentes situaciones, como uso de disco, memoria o ancho de banda, los resultados de un encuesta, la cantidad recaudada en una colecta, el nΓΊmero de registros coincidentes en una consulta, etc.
Esta etiqueta se estbalce con una serie de atributos:
min
y max
representan los lΓmites inferior y superior del rango.
low
y high
ayudarΓ‘n a los autores a definir segmentos (desde los mΓ‘rgenes) que contendrΓ‘n valores considerados como bajos y altos respectivamente
optimal
indicarΓ‘ cuΓ‘l es el valor Γ³ptimo en esta medida
value
representa el valor tomado por esta medida
Si los atributos
min
ymax
no son declarados en este control, los lΓmites de esta medida serΓ‘n los predeterminados 0 (lΓmite inferior) y 1 (lΓmite superior)
El elemento progress
representa el estado de progreso de una operaciΓ³n, como ser la transferencia de un archivo, una codificaciΓ³n o la recuperaciΓ³n de valores desde una base de datos. Este control es normalmente representado por una barra de progreso, compuesta por un contenedor que es llenado de izquierda a derecha de acuerdo con el progreso de la operaciΓ³n.
Una barra progress
puede representar un progreso en dos estados: como indeterminado, indicando que el proceso estΓ‘ siendo llevado a cabo pero no existe informaciΓ³n acerca de su estado de completitud; o como un valor que indica la cantidad de trabajo que ha sido realizado en la tarea.
Los autores no deben confundir este elemento con meter
. A diferencia de meter
, el elemento progress
mide ΓΊnicamente la completitud de una tarea.