Formularios
Formularios
Formularios
Formularios (1)
<form>
Atributos comunes
Controles
o Botones
o Botones submit
o Botones reset
o Texto
o Contraseña
o Número
o Fecha
o Hora
o Casilla de verificación
o Botón radio
o Color
o Rango
o Oculto
o Área de texto
o Menú
El formulario: <form>
<form>
El atributo type
El atributo name
El atributo name identifica al control.
Todos los controles de un formulario deben tener el atributo name porque, en general,
sólo se envían los controles que lo tienen (aunque hay excepciones, como los controles
de tipo imagen o los botones, que no los necesitan).
En general, los atributos name no se deben repetir, porque no se recibiría toda la
información al enviarla. La única excepción es el botón radio, como se explica en el
apartado correspondiente.
El atributo value
El atributo value permite establecer el valor inicial de un control, aunque cada control lo
utiliza de una forma ligeramente distinta y algunos controles no lo admiten (área de
texto, archivo o imagen).
En algunos casos (botones) el valor se muestra al usuario y el usuario no puede
modificarlo. En otros casos (cajas de texto, contraseña) el valor se muestra en la página
y el usuario puede modificarlo. En otros casos (casillas de verificación, botones radio,
opciones de menú, oculto) el valor no se muestra en la página y el usuario no puede
modificarlo.
En algunos casos (botones, oculto, botones radio) el atributo value es necesario. En
otros casos (casilla de verificación, opciones de menú) es conveniente. En otros casos
(cajas de texto, contraseña, imagen) puede omitirse. En el caso del selector de archivo,
los navegadores no lo admiten por motivos de seguridad.
El atributo required
El atributo required permite indicar qué controles es obligatorio rellenar para enviar el
formulario.
<p>Nombre: <input type="text" name="nombre" required></p>
<p>Sexo:
<input type="radio" name="hm" value="h" required> Hombre
<input type="radio" name="hm" value="m" required> Mujer
</p>
<p>Edad:
<input type="radio" name="edad" value="menor"> Menor
<input type="radio" name="edad" value="adulto" required> Adulto
</p>
El atributo placeholder
El atributo size
El atributo autofocus
El atributo autofocus permite indicar el control que debe tener el foco al cargarse el
formulario.
Este atributo facilita la accesibilidad del formulario pues permite que el usuario pueda
empezar a rellenar el formulario sin necesidad de hacer clic en el elemento. Como el
navegador desplaza automáticamente la página hasta la posición del elemento, se
recomienda que el elemento con atributo autofocus se encuentren al principio de la
página, para que el desplazamiento no confunda al usuario.
Nota: En estos apuntes (lecciones y ejercicios) no se utiliza este atributo porque como
en las páginas se incluyen varios formularios en distintas posiciones de la página, el
desplazamiento automático a un elemento con atributo autofocus puede confundir al
lector.
<input submit>
<button>
El botón Submit es el que permite al usuario remitir los datos al servidor. Se crea
mediante una etiqueta <input> o <button> cuyo atributo type tiene el valor submit.
<input type="submit" value="Enviar">
<button type="submit">
<img src="send.svg" alt="imagen" width="32" height="32" style="vertical-
align: middle">
Enviar
</button>
Si un botón <input> no tiene definido el atributo value, Firefox muestra el texto "Enviar
consulta", mientras que Google Chrome muestra el texto "Enviar", como se comenta en
la página de diferencias entre navegadores. Para garantizar el mismo texto en ambos
navegadores, en estos apuntes se incluye siempre en los botones Enviar el
atributo value con el valor Enviar.
<input reset>
<button>
El botón Reset restablece los valores iniciales del formulario. Se crea mediante una
etiqueta <input> o <button> cuyo atributo type tiene el valor reset.
<input type="reset" value="Borrar">
<button type="reset">
<img src="reset.svg" alt="imagen" width="32" height="32" style="vertical-
align: middle">
Borrar
</button>
<input text>
Las cajas de texto de una sola línea se crean mediante una etiqueta <input> cuyo
atributo type tiene el valor text.
<input type="text" name="texto">
El atributo value (optativo) permite incluir un texto en la caja de texto para que el
usuario lo modifique. HTML 5 introdujo el atributo placeholder, mucho más cómodo
para el usuario, ya que no tiene que borrar el texto de ayuda.
<input type="text" name="texto" value="Escriba algo">
Las cajas de texto de una sola línea específicas para contraseñas se crean mediante una
etiqueta <input> cuyo atributo type tiene el valor password.
<input type="password" name="contrasena">
<input number>
Las cajas de texto de una sola línea específicas para números se crean mediante una
etiqueta <input> cuyo atributo type tiene el valor number.
En principio, los valores admitidos por el control son números enteros.
Escriba un número:
<input type="number" name="numero">
El atributo step permite que el control admita números decimales. Los navegadores
alertan al usuario cuando no ha escrito un valor correcto, como mínimo al enviar el
formulario.
En el caso de los números decimales:
Chrome admite la coma (,) y el punto (.) como separadores de la parte decimal.
Firefox sólo admite la coma (,) como separador de la parte decimal.
Para poder escribir cualquier número, el atributo step debe tener el valor any:
Escriba un número cualquiera:
<input type="number" name="numero" step="any">
<input date>
Las cajas de texto de una sola línea específicas para fechas (días, meses, años) se crean
mediante una etiqueta <input> cuyo atributo type tiene el valor date. El dato se envía
con el formato AAAA-MM-DD donde AAAA es el número de año, MM el número de
mes y DD el número de día.
Fecha: <input type="date" name="fecha">
<input time>
Las cajas de texto de una sola línea específicas para tiempos (horas, minutos) se crean
mediante una etiqueta <input> cuyo atributo type tiene el valor time. El dato se envía
con el formato HH-MM donde HH son las horas y MM los minutos.
Hora: <input type="time" name="hora">
Casilla de verificación: <input type="checkbox">
<input checkbox>
Las casillas de verificación sólo se envían si se han marcado. El atributo value contiene
el valor que envía el formulario si la casilla de verificación está marcada. Si el
atributo value no está establecido, el formulario envía el valor on.
<input type="checkbox" name="casilla">Casilla 1
<input radio>
Los botones radio se crean mediante una etiqueta <input> cuyo atributo type tiene el
valor radio.
<input type="radio" name="boton" value="1">Opción 1
Lo botones radio que tienen el mismo atributo name forman un grupo, es decir, que si se
marca uno de ellos se desmarca automáticamente el resto.
<input type="radio" name="boton" value="1">Opción 1<br>
<input type="radio" name="boton" value="2">Opción 2<br>
<input type="radio" name="boton" value="3">Opción 3
Si los atributos name no tienen el mismo valor, los botones radio son independientes (al
marcar uno no se desmarca el otro):
<input type="radio" name="boton1" value="1">Opción 1<br>
<input type="radio" name="boton2" value="2">Opción 2
Los botones radio sólo se envían si se han marcado. El atributo value contiene el valor
que envía el formulario si el botón radio está marcado.Si el atributo value no está
establecido, el formulario envía el valor on, así que para poder saber cuál ha sido la
opción elegida por el usuario es necesario establecer con valores distintos los
atributos value de todos los elementos de un botón radio.
<input type="radio" name="boton"> Hombre<br>
<input type="radio" name="boton"> Mujer
Si uno de los botones tiene el atributo checked con el valor checked, el botón aparece
marcado de forma predeterminada.
<input type="radio" name="boton" value="1">Opción 1<br>
<input type="radio" name="boton" value="2" checked>Opción 2
Una vez se ha hecho clic en uno de los botones radio, siempre habrá una opción
seleccionada. Para desactivar un botón radio, se necesita un botón Reset.
<input type="radio" name="boton" value="1">Opción 1<br>
<input type="radio" name="boton" value="2">Opción 2<br>
<input type="reset" value="Borrar">
El inconveniente del botón Reset es que reinicia todos los controles del formulario. Este
problema no tiene una solución sencilla. Algunos recomiendan incluir en los botones
radio una opción neutra, de manera que el usuario pueda cambiar su respuesta sin tener
que reiniciar todo el formulario. El problema es que el usuario puede malinterpretar esa
opción como una opción más y elegirla a propósito, por lo que se recomienda valorar en
cada caso la mejor solución. Quizás en formularios con pocos controles no merezca la
pena incluir esa opción neutra, y hacerlo sólo en formularios con muchos controles en
los que el usuario tendría que volver a completar todo el formulario si utiliza el botón
Reset
<p>Nombre: <input type="text" name="nombre"></p>
<p>
<input type="radio" name="boton" value="1">Opción 1<br>
<input type="radio" name="boton" value="2">Opción 2<br>
<input type="radio" name="boton" value="0" checked>Sin respuesta
</p>
<input color>
El atributo value permite especificar un color inicial. El color se debe indicar en formato
hexadecimal (#RRGGBB).
<input type="color" name="colorElegido" value="#ff0000">
<input range>
El control de rango se crea mediante una etiqueta <input> cuyo atributo type tiene el
valor range. El rango de valores predeterminado es de 0 a 100 (valores enteros).
Indique su nivel:
<input type="range" name="rango">
Los atributos min, max y step permiten elegir respectivamente el valor mínimo, el
máximo y el incremento.
Indique su nivel (de 1 a 10, de 3 en 3):
<input type="range" name="rango"
min="1" max="10" step="3">
Indique su nivel (de 0 a 1, de 0,1 en 0,1):
<input type="range" name="rango"
min="0" max="1" step="0.1">
El atributo list debería permitir añadir etiquetas al control, pero actualmente (enero de
2023) los navegadores admiten el atributo parcialmente
Si el atributo list contiene el id de un elemento datalist que contiene
elementos option con atributos value, el control muestra marcas en la posición
correspondiente a esos valores:
El control oculto se crea mediante una etiqueta <input> cuyo atributo type tiene el
valor hidden. Lógicamente, los navegadores no muestran estos controles en la pantalla
(aunque pueden verse en el código fuente).
<input type="hidden" name="nombre" value="pepito">
Los controles ocultos se pueden utilizar, por ejemplo, para dividir en varias páginas un
formulario largo. El problema de dividir en varias páginas es que cada página es
independiente de las demás y HTML no permite relacionar una con otra por lo que no se
sabría que la información enviada en el segundo formulario completa la del primero (los
lenguajes de programación de servidor, como PHP, sí que disponen de mecanismos para
relacionar unas páginas con otras, por ejemplo mediante cookies o sesiones). Una
solución es guardar en el segundo formulario la información enviada en el primer
formulario en controles ocultos, de manera que cuando el usuario envía el segundo
formulario, está enviando a la vez la información del primero y así sucesivamente en los
siguientes formularios.
Escriba su nombre: <input type="text" name="nombre">
Escriba su edad: <input type="number" name="edad"><br>
<input type="hidden" name="nombre" value="...">
Hay un caso especial de control oculto. Si un control oculto tiene el atributo name con
el valor _charset_ y no tiene atributo value, ese control envía el juego de caracteres de
los datos enviados
<input type="hidden" name="_charset_">
<textarea>
Las cajas de texto de varias líneas se crean mediante la etiqueta <textarea>. Los
atributos obligatorios rows y cols establecen el número de filas y columnas iniciales de
la caja, aunque los navegadores permiten modificarlo arrastrando la esquina inferior
derecha.
<textarea name="texto" rows="4" cols="20"></textarea>
<textarea name="texto" rows="3" cols="30"></textarea>
Menú: <select>
<select>
<option>
<optgroup>
Los menús se crean mediante la etiqueta <select>. Cada opción del menú se define
mediante la etiqueta <option>.
<select name="menu">
<option>Uno</option>
<option>Dos</option>
<option>Tres</option>
</select>
Formularios
Hasta ahora, la única forma que hemos visto de interactuar con una web son los
enlaces, haciendo clic en ellos. Pero existe otra opción más potente para que el
usuario interactúe con una web: los formularios. Son una herramienta muy útil
para enviar información a un servidor. Cuando nos registramos en una web,
rellenamos una serie de datos (e-mail, contraseña, etc.) mediante un formulario.
Así pues, un formulario contiene una serie de elementos (llamados
normalmente “controles” o “campos”) que colocamos en una página web para
que el usuario pueda introducir información. Veremos a continuación qué tipos
de elementos puede tener un formulario y cómo se colocan en la página.
1. Estructura básica de un formulario
Todo el contenido de un formulario va encerrado entre una pareja de
etiquetas form. Esta etiqueta tiene, entre otros, los siguientes atributos:
text: para definir cuadros de texto simples (de una sola línea).
password: para definir cuadros de texto enmascarados (para contraseñas)
file: para definir controles para subir archivos al servidor. Aparecerá un
cuadro de texto y un botón para que, al pinchar en él, podamos elegir el
archivo. Estos controles no son de mucha utilidad sin un lenguaje de
servidor que les ayude a completar la tarea, como PHP, JSP o ASP.NET. Se
puede añadir el atributo multiple en el caso de que queramos poder
adjuntar varios archivos.
checkbox: para definir casillas de verificación o checkboxes
radio: para definir botones de radio.
submit: para definir el botón que servirá para enviar el formulario al
pulsarlo
reset: para el botón que servirá para borrar el contenido del formulario al
pulsarlo
button: para definir otro botón cualquiera, con otra funcionalidad. Esta
última opción no es demasiado útil de momento, si no se combina con
lenguajes de cliente como Javascript.
hidden: sirve para definir campos ocultos, que almacenan información
junto con el formulario pero no la muestran al usuario. Aparentemente
no tienen utilidad, pero combinado con lenguajes de servidor como PHP,
pueden ser de mucha ayuda.
A partir de HTML 5 se añadieron otros tipos (types) válidos que permitían definir
controles específicos. Podemos destacar los siguientes:
email: para cuadros de texto donde se requiera introducir una dirección
de correo electrónico
number: para cuadros que exijan un dato numérico (real o entero)
date, time o datetime: para cuadros que exijan poner una fecha, hora o
fecha y hora conjunta, respectivamente
color: para controles que permiten elegir un color de una paleta de
colores
search: para cuadros de búsqueda. En algunos navegadores se habilita
estos controles con un aspa para borrar el contenido del cuadro.
url: para introducir direcciones de internet.
range: para controles de tipo slider, con una barra que podemos mover
entre unos límites. Aunque, desafortunadamente, no se muestra ninguna
información visual del valor actualmente seleccionado (se debería utilizar
algo de código JavaScript y elementos adicionales para poder ver este
valor)
Una vez elegido el tipo de control, la etiqueta input tiene otra serie de atributos
que debemos tener en cuenta (muchos de estos atributos también están
presentes en otros tipos de controles):
name: sirve para dar un nombre identificativo al control. Nos será muy útil
para identificarlo luego en los lenguajes de cliente o de servidor
(JavaScript, PHP…). Por ejemplo todos los botones de radio que
queramos agrupar en funcionalidad, deben tener la misma
etiqueta name.
id: el identificador del control, al igual que podemos usar este atributo en
otras etiquetas HTML. Se utiliza en CSS, y también para algunas cosas
con JavaScript. A menudo se utiliza junto a name, dando a los dos el
mismo nombre o valor.
value: sirve para dar un valor inicial con el que rellenar el control (hasta
que el usuario se lo cambie)
size: sirve para indicar el tamaño del control (en caracteres si es un
cuadro de texto, o en píxeles para el resto)
maxlength: sirve para indicar el máximo número de caracteres que puede
aceptar el control (en el caso de cuadros de texto).
checked: sirve para indicar, si es un checkbox o botón de radio, que está
marcado. Es un valor de verdadero o falso, por lo que, si no se pone,
asumimos que el control no está marcado, y si se pone sí lo está
disabled: sirve para deshabilitar un control, y que el usuario no pueda
modificar su valor. Se usa sobre todo para dar información al usuario,
pero sin que éste la pueda modificar. Es un valor de verdadero o falso,
como el anterior, y se utiliza de la misma forma. Si un campo
está disabled no se envía cuando se envía el formulario.
readonly: similar al anterior, sirve para que un control sea de sólo lectura
y el usuario no pueda modificar su valor. A diferencia del anterior, el
contenido sí se envía con el resto del formulario.
placeholder: muestra un texto informativo dentro del cuadro de texto,
que normalmente indica al usuario el tipo de información que debe
introducir en dicho cuadro.
<p>Introduce tu e-mail:</p>
<input type="email" name="email" size="20" maxlength="50">
<br>
Formularios
Hasta ahora, la única forma que hemos visto de interactuar con una web son los
enlaces, haciendo clic en ellos. Pero existe otra opción más potente para que el
usuario interactúe con una web: los formularios. Son una herramienta muy útil
para enviar información a un servidor. Cuando nos registramos en una web,
rellenamos una serie de datos (e-mail, contraseña, etc.) mediante un formulario.
Así pues, un formulario contiene una serie de elementos (llamados
normalmente “controles” o “campos”) que colocamos en una página web para
que el usuario pueda introducir información. Veremos a continuación qué tipos
de elementos puede tener un formulario y cómo se colocan en la página.
text: para definir cuadros de texto simples (de una sola línea).
password: para definir cuadros de texto enmascarados (para contraseñas)
file: para definir controles para subir archivos al servidor. Aparecerá un
cuadro de texto y un botón para que, al pinchar en él, podamos elegir el
archivo. Estos controles no son de mucha utilidad sin un lenguaje de
servidor que les ayude a completar la tarea, como PHP, JSP o ASP.NET. Se
puede añadir el atributo multiple en el caso de que queramos poder
adjuntar varios archivos.
checkbox: para definir casillas de verificación o checkboxes
radio: para definir botones de radio.
submit: para definir el botón que servirá para enviar el formulario al
pulsarlo
reset: para el botón que servirá para borrar el contenido del formulario al
pulsarlo
button: para definir otro botón cualquiera, con otra funcionalidad. Esta
última opción no es demasiado útil de momento, si no se combina con
lenguajes de cliente como Javascript.
hidden: sirve para definir campos ocultos, que almacenan información
junto con el formulario pero no la muestran al usuario. Aparentemente
no tienen utilidad, pero combinado con lenguajes de servidor como PHP,
pueden ser de mucha ayuda.
A partir de HTML 5 se añadieron otros tipos (types) válidos que permitían definir
controles específicos. Podemos destacar los siguientes:
Una vez elegido el tipo de control, la etiqueta input tiene otra serie de atributos
que debemos tener en cuenta (muchos de estos atributos también están
presentes en otros tipos de controles):
name: sirve para dar un nombre identificativo al control. Nos será muy útil
para identificarlo luego en los lenguajes de cliente o de servidor
(JavaScript, PHP…). Por ejemplo todos los botones de radio que
queramos agrupar en funcionalidad, deben tener la misma
etiqueta name.
id: el identificador del control, al igual que podemos usar este atributo en
otras etiquetas HTML. Se utiliza en CSS, y también para algunas cosas
con JavaScript. A menudo se utiliza junto a name, dando a los dos el
mismo nombre o valor.
value: sirve para dar un valor inicial con el que rellenar el control (hasta
que el usuario se lo cambie)
size: sirve para indicar el tamaño del control (en caracteres si es un
cuadro de texto, o en píxeles para el resto)
maxlength: sirve para indicar el máximo número de caracteres que puede
aceptar el control (en el caso de cuadros de texto).
checked: sirve para indicar, si es un checkbox o botón de radio, que está
marcado. Es un valor de verdadero o falso, por lo que, si no se pone,
asumimos que el control no está marcado, y si se pone sí lo está
disabled: sirve para deshabilitar un control, y que el usuario no pueda
modificar su valor. Se usa sobre todo para dar información al usuario,
pero sin que éste la pueda modificar. Es un valor de verdadero o falso,
como el anterior, y se utiliza de la misma forma. Si un campo
está disabled no se envía cuando se envía el formulario.
readonly: similar al anterior, sirve para que un control sea de sólo lectura
y el usuario no pueda modificar su valor. A diferencia del anterior, el
contenido sí se envía con el resto del formulario.
placeholder: muestra un texto informativo dentro del cuadro de texto,
que normalmente indica al usuario el tipo de información que debe
introducir en dicho cuadro.
<p>Introduce tu e-mail:</p>
<input type="email" name="email" size="20" maxlength="50">
<br>
<label>
Introduce tu nombre:
<input type="text" name="nombre" id="nombre" size="20">
</label>
Otra de las ventajas que tiene usar etiquetas es que, en controles como
los checkboxes o los botones de radio, ampliamos el área en que podemos
hacer clic para seleccionarlos, ya que también podemos hacer clic en la etiqueta
asociada al control (cosa que no se podría hacer si usáramos simples párrafos).
name para ponerle un nombre al control, al igual que hacíamos con input
rows para indicar cuántas filas de texto va a haber
cols para indicar cuántas columnas de texto va a haber
Si luego se ocuparan más filas o columnas que las que indiquemos, aparecerá
una barra de desplazamiento para poder ver el resto del texto escrito en el área
de texto.
2.4. Listas
Podemos definir dos tipos de listas para elegir opciones en un formulario: listas
fijas (ocupan una altura determinada y dejan visibles X elementos, aunque
pueden tener más y verlos mediante barras de desplazamiento) y listas
desplegables (sólo es visible un elemento, y los demás se muestran
desplegando la lista). Ambas se crean con la etiqueta select, que admite los
siguientes atributos:
Internamente, la etiqueta select tiene una serie de etiquetas option, una para
cada elemento que queramos añadir a la lista. Estos elementos tienen un
atributo value para indicar su valor (que puede ser diferente del que luego se
mostrará). Además, para indicar si hay algún elemento preseleccionado de
antemano, marcaremos ese elemento con el atributo selected.
Veamos aquí un ejemplo y cómo se vería:
Ejercicio 1:
Crea una página llamada formDatos.html para rellenar tus datos personales.
Añade un encabezado 1 (h1) que diga “Rellena tus datos”, y debajo un
formulario como el que tienes a continuación:
Ejercicio 2:
required
pattern
Este atributo permite especificar un patrón de entrada, de forma que para que
el dato que introduce el usuario se considere válido, debe ajustarse a ese
patrón. Por ejemplo, para un campo que pida un número de teléfono podemos
esperar que el usuario escriba entre 9 y 11 dígitos:
Para campos numéricos o de tipo rango (range) podemos establecer con estos
dos atributos los valores mínimo y/o máximo que se permiten (inclusive).
Formularios (1). HTML. Páginas web HTML y hojas de estilo CSS. Bartolomé Sintes Marco.
www.mclibre.org
ttps://www.mclibre.org/consultar/htmlcss/html/html-formularios.html