Guía 8 - Uso de formularios en una página Web

UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLOGICOS
ESCUELA DE COMPUTACION
CICLO 01-2016
GUIA DE LABORATORIO Nº 8
Nombre de la práctica: Uso de formularios en una página Web
Lugar de ejecución: Laboratorio de Informática
Tiempo estimado: 2:30 horas
Materia: Lenguajes de Marcado y Estilos Web
I. OBJETIVOS
Que el estudiante:
1. Entienda el funcionamiento y la utilidad de los formularios como medio para obtener información de
parte del usuario.
2. Conozca los controles para entrada de información y para selección de opciones por parte del usuario.
3. Utilice los principales atributos de las etiquetas de entrada de datos <INPUT> y de las etiquetas de
controles de selección <SELECT>.
4. Comprenda los dos métodos de envío de formularios.
5. Conozca los nuevos controles y atributos de HTML 5 para los formularios
II. INTRODUCCION TEORICA
FORMULARIOS EN HTML
La Web 2.0 está completamente enfocada en el usuario. Y cuando el usuario es el centro de atención, todo está
relacionado con interfaces, en cómo hacerlas más intuitivas, más naturales, más prácticas, y por supuesto más
atractivas.
Los formularios web son la interface más importante de todas, permiten a los usuarios insertar datos, tomar
decisiones, comunicar información y cambiar el comportamiento de una aplicación. Durante los últimos años,
códigos personalizados y librerías fueron creados para procesar formularios en el ordenador del usuario.
HTML5 vuelve a estas funciones estándar agregando nuevos atributos, elementos y una API completa. Ahora la
capacidad de procesamiento de información insertada en formularios en tiempo real ha sido incorporada en
los navegadores y completamente estandarizada.
LA ETIQUETA FORM
La etiqueta <form>, permite definir un formulario de datos, utilizados para traspasar datos al servidor.
Un formulario puede contener a su vez, elementos de entrada como pueden ser campos de texto, casillas de
verificación, botones de radio, botones de envió, listas de selección, áreas de texto, etc.
Los formularios permiten que el usuario pueda introducir datos en el documento web, para que
posteriormente estos datos sean enviados y tratados por el servidor, para almacenarlos en una base de datos,
interactuar con el usuario, geolocalización, etc.
Los formularios en HTML no han cambiado mucho. La estructura sigue siendo la misma, pero HTML5 ha
agregado nuevos elementos, tipos de campo y atributos para expandirlos tanto como sea necesario y proveer
así las funciones actualmente implementadas en aplicaciones web.
1 / 34
ATRIBUTOS DE LA ETIQUETA FORM
Atributo action
Este atributo permite especificar donde han de ser enviado los datos del formulario, cuando este es enviado.
Normalmente suele ser un documento web, escrito en un lenguaje de programación de servidor, el cual se
encarga de procesar los datos. También puede ser que los datos sean enviados a una dirección de correo
electrónico.
El siguiente ejemplo muestra el uso del atributo en un documento web, enviando los datos a un archivo php
que encargaría de procesar la información del formulario.
<form action="recepcion.php">
<label>Nombre</label>
<input type="text" name="nombre">
<input type="submit" name="enviar" value="enviar">
</form>
Atributo method
Este atributo especifica el método HTTP que se usará para enviar el conjunto de datos del formulario.
Los valores posibles pueden ser GET (valor por defecto) o POST. Ambos no distinguen entre mayúsculas y
minúsculas.
El primer valor del atributo, el valor GET, envía los datos del formulario utilizando la url, por lo tanto los datos
son añadidos a la dirección url mediante valores tipo nombre/valor, no se recomienda utilizar este método
cuando los datos son sensibles a la seguridad, ya que los valores son mostrados en la barra de direcciones del
navegador.
El segundo valor del atributo, el valor POST, por el contrario, hace que los datos sean enviados dentro de la
petición HTTP, del atributo action. Por lo tanto los datos no son visibles en su envió y la seguridad de los
mismos se mantiene intacta.
Atributo autocomplete
Este atributo especifica que el formulario pueda utilizar las entradas de datos anteriores que pueda haber
realizado el usuario, para autocompletar los campos que son solicitados por el formulario.
Se puede establecer como valores posibles on, que indica la activación. Y off, indicando que el auto
completado estaría desactivado. Si se establece el valor del atributo como activado, se pueden indicar campos
del formulario como desactivados y viceversa.
Atributo name
El atributo name permite especificar el nombre que se quiere asignar al formulario o los datos que se solicitan
en el mismo. El nombre puede ser utilizado posteriormente bien por lenguajes interpretados en el cliente, para
interactuar con el formulario, o bien con lenguajes interpretados en el servidor para procesar los datos
recibidos.
El siguiente ejemplo muestra el uso del atributo aplicado al formulario y datos del mismo.
<form action="envio_datos.php" method="get" name="Formulario1">
Nombre: <input type="text" name="nombre">
<br>
Dirección: <input type="text" name="direccion">
2
<br>
<input type="submit" value="enviar" name="enviar">
</form>
Atributo novalidate
Este atributo permite especificar que los datos del formulario no sean validados, según las características de los
campos utilizados en el formulario, de esta forma el formulario envía los datos sin realizar ningún tipo de
comprobación sobre los datos.
Es un atributo booleano, por lo tanto su aparición en la etiqueta de formulario, hace que se active el mismo.
<form action="envio_datos.php" method="get" name="Formulario1" novalidate>
Nombre: <input type="text" name="nombre" required>
<br>
Dirección: <input type="text" name="direccion">
<br>
<input type="submit" value="enviar" name="enviar">
</form>
ETIQUETAS DE UN FORMULARIO
Las etiquetas además de ser de distintos tipos, tienen sus atributos propios que se añaden a los comunes de
todas las etiquetas.
Las etiquetas de control de formulario son las siguientes:










<INPUT>
<LABEL>
<TEXTAREA>
<SELECT>
<OPTION>
<OPTGROUP>
<DETAILS>
<BUTTON>
<FIELDSET>
<LEGENT>
LA ETIQUETA INPUT
El elemento más importante en un formulario es <input>. Este elemento puede cambiar sus características
gracias al atributo type (tipo). Este atributo determina qué clase de entrada es esperada desde el usuario.
Los tipos disponibles hasta antes de HTML5 eran el multipropósitos text (para textos en general) y solo unos
pocos más específicos como password o submit.
HTML5 ha expandido las opciones incrementando de este modo las posibilidades para este elemento.
En HTML5 estos nuevos tipos no solo están especificando qué clase de entrada es esperada sino también
diciéndole al navegador qué debe hacer con la información recibida. El navegador procesará los datos
ingresados de acuerdo al valor del atributo type y validará la entrada o no.
El atributo type trabaja junto con otros atributos adicionales para ayudar al navegador a limitar y controlar en
tiempo real lo ingresado por el usuario.
3
Hasta antes de HTML5 la etiqueta input admitía los siguientes tipos (type):
Input Type: Text
El tipo text representa un espacio para introducir un texto. Como en casi todos los campos de formulario su
valor se puede inicializar utilizando el atributo value. Este campo tiene la peculiaridad que si se omite el type,
se asume Text. Podemos ver un ejemplo con el siguiente código:
<form action="actualizar.php" method="get">
<p>Nombre:<input type="text" name="Nombre" /></p>
<p>Apellido:<input type="text" name="Apellido" /></p>
<p><input type="submit" name="Enviar"></p>
</form>
Input Type: Password
Representa una entrada de datos de texto en la que se visualizan asteriscos pero al enviarse se envían los datos
reales. El dato introducido en el campo se asigna al atributo value.
<form action="actualizar.php" method="get">
<p>Nombre: <input type="text" name="Nombre" /></p>
<p>Apellido: <input type="text" name="Apellido" /></p>
<p>Clave: <input type="password" name="password" /></p>
<p><input type="submit" name="Enviar"></p>
</form>
4
Input Type: Hidden
Es un dato que se mantiene oculto a la vista pero que se pasa al servidor junto con el resto de los campos del
formulario.
Es un campo adecuado para pasar información de una página a otra y que se puede utilizar en los script como
un dato más. Al ser un dato oculto, el usuario no puede ni ver ni modificar el dato. El dato se le asigna al
atributo value.
<input type="hidden" name="datoOculto" value="Dato pasado como oculto" />
Input Type: Checkbox
Es una dato que es representado al usuario por una casilla de verificación; por lo tanto, sólo puede tener dos
valores: seleccionado o no seleccionado. Si se utiliza el atributo checked, el campo se muestra seleccionado por
defecto.
<form action="actualizar.php" method="get">
<p>Seleccione sus aficiones</p>
<p><input type="checkbox" checked name="Internet" />Informatica</p>
<p><input type="checkbox" name="Leer" />Video juegos</p>
<p><input type="checkbox" name=“Juegos" />Hacer Deportes</p>
<p><input type="submit" name="Enviar"></p>
</form>
Input Type: Radio
Es un dato que se le presenta al usuario con botones de opción; una variable asignada a un grupo de botones
en el que solo uno puede estar seleccionado. Si se utiliza el atributo checked, el campo aparece seleccionado
por defecto. Para informarle a HTML que todos los botones forman parte de un grupo de opciones, estos
comparten el atributo name.
<form action="actualizar.php" method="get">
<p>Seleccione su Estado Civil</p>
<p><input type="radio" checked name="eCivil" />Soltero</p>
<p><input type="radio" name="eCivil" />Casado</p>
<p><input type="radio" name="eCivil" />En una relación</p>
<p><input type="radio" name="eCivil" />Viudo(a)</p>
<p><input type="submit" value="Enviar"></p>
</form>
Input Type: SUBMIT
Este tipo es representado por un botón que al ser pulsado envía los datos recogidos por el formulario al script
definido por el atributo action del formulario. En este caso el atributo value se utiliza para poner el texto
dentro del botón.
Input Type: RESET
Es un dato que se representa por un botón que al ser pulsado reinicia los campos del formulario con los valores
predeterminados. El atributo value se utiliza como texto del botón.
Input Type: IMAGE
Este atributo ejerce la misma función del input submit, con la diferencia de que este atributo es representado
por una imagen, la imagen a mostrar es llamada por el atributo src. Al hacer clic en la imagen se envía el
formulario.
5
<form action="actualizar.php" method="post" id="form1">
<p>Rellene el formulario</p>
<p>Nombre: <input type="text" name="Nombre" /></p>
<p>Apellidos: <input type="text" name="Apellidos" /></p>
<p>Email: <input type="text" name="Email" /></p>
<p><input type="image" src="input_type_image.png" width="100"
height="100"></p>
</form>
Input type:File
Este atributo permite enviar archivos al servidor mediante el método POST. En el navegador se muestra un
botón examinar o seleccionar para que podamos elegir el archivo que se requiere enviar.
<form action="actualizar.php" method="post" id="form1">
<p>Elija el archivo que a enviar</p>
<p><input type="file" name="archivo" /></p>
<p><input type="submit" value="Envíar"></p>
</form>
NUEVOS TIPOS DE ENTRADA DE DATOS EN FORMULARIOS
En HTML5 se han incluido nuevos tipos de entradas de datos para los formularios, algunos de estos nuevos
tipo de entrada tienen la capacidad de comprobar si el valor introducido coincide con su tipo de dato lo que
nos ayuda bastante a la hora de solucionar la validación de los datos que el usuario introduce.
Con el uso de estas nuevas características en los formulario HTML5 nos evitamos tener que crear script para
validar los datos del lado del cliente.
Input type: email
El nuevo campo de introducción de datos de tipo email permite especificar que el contenido insertado deberá
ser una dirección de e-mail, es decir, que deberá incluir el carácter @.
<form action="recepcion.php">
<label>Ingresa tu mail</label>
<input type=“email" name=“correo">
<input type="submit" name="enviar" value="enviar">
</form>
Input type: tel
Este tipo de campo es para números telefónicos. A diferencia de los tipos email, el tipo tel no requiere ninguna
sintaxis en particular. Es solo una indicación para el navegador en caso de que necesite hacer ajustes de
acuerdo al dispositivo en el que la aplicación es ejecutada.
<form action="recepcion.php">
<label>Su telefono:</label>
<input type="tel" name=“telefono">
<input type="submit" name="enviar"
value="enviar">
</form>
6
Input type: url
El campo para la introducción de datos de tipo url permite recuperar una URL. La comprobación de dicha URL
para ver si es válida dependerá totalmente del
navegador.
<form action="recepcion.php">
<label>Su sitio web:</label>
<input type="url" name=“sitio">
<input type="submit" name="enviar" value="enviar">
</form>
Input type: date
El campo de tipo date permite insertar una fecha. Pero, en lugar de dejar que sean los propios usuarios quienes
inserten las fechas, con los riesgos de error que eso conlleva, los navegadores propondrán de forma nativa una
interfaz de selección de fechas que sea fácil de usar.
<form action="recepcion.php">
<label>Fecha de nacimiento:</label>
<input type="date" name="f_nacimiento">
<input type="submit" name="enviar“
value="enviar">
</form>
Input type: datetime-local
Este campo permite ingresar fecha y hora en una sola toma de datos.
<form action="recepcion.php">
<label>Fecha y hora del parcial:</label>
<input type="datetime-local" name="f_parcial">
<input type="submit" name="enviar“
value="enviar">
</form>
Input type: time
Este campo permite ingresar una hora en particular
<form action="recepcion.php">
<label>Hora actual:</label>
<input type=“time" name=“hora_actual">
<input type="submit" name="enviar” value="enviar">
</form>
7
Input type: number
Como su nombre lo indica, el tipo number es sólo válido cuando recibe una entrada numérica. Existen algunos
atributos nuevos que pueden ser útiles para este campo:
 min El valor de este atributo determina el mínimo valor aceptado para el campo.
 max El valor de este atributo determina el máximo valor aceptado para el campo.
 step El valor de este atributo determina el tamaño en el que el valor será incrementado o disminuido
en cada paso.
<form action="recepcion.php">
<label>Ingrese su edad:</label>
<input type="number" min="18" max="100" step="2" value="22" name="edad" />
<input type="submit" name="enviar"
value="enviar">
</form>
Input type: search
El tipo search permite insertar un campo de introducción de datos específico para las búsquedas. Su
visualización dependerá de los parámetros de la interfaz del navegador que esté utilizando el visitante, ¡así que
puede variar muchísimo!
<form action="recepcion.php">
<label>Buscar:</label>
<input type="search" name="busqueda" />
<input type="submit" name="enviar"
value="enviar">
</form>
ATRIBUTOS DE LA ETIQUETA INPUT
Existen muchos atributos más del elemento INPUT, que varían de acuerdo al valor asignado al atributo type.
Por ejemplo, si se asigna type=“text”, se pueden utilizar los siguientes atributos:

name y id : Ambos son identificadores únicos para el cuadro de texto. El primero, especifica un nombre
para el control y el segundo, un identificador. Por razones de compatibilidad se sigue usando el name.

value: permite establecer un valor inicial para el control. En el caso de un cuadro de texto, el texto por
defecto que aparecerá en el control.

size: El tamaño con que se visualizará el control medido en número de caracteres.

maxlenght: define el número máximo de caracteres que se pueden ingresar en el control de cuadro de
texto. Por defecto, se pueden ingresar infinitos caracteres.

disabled: hace que el control aparezca deshabilitado en el contexto.

placeholder: representa una sugerencia corta, una palabra o frase provista para ayudar al usuario a
ingresar la información correcta. El valor de este atributo es presentado en pantalla por los navegadores
dentro del campo, como una marca de agua que desaparece cuando el elemento es enfocado.
8

required: Este atributo booleano no dejará que el formulario sea enviado si el campo se encuentra vacío.
Por ejemplo, cuando usamos el tipo email para recibir una dirección de email, el navegador comprueba si
la entrada es un email válido o no, pero validará la entrada si el campo está vacío.
Cuando el atributo required es incluido, la entrada será válida sólo si se cumplen las dos condiciones: que
el campo no esté vacío y que el valor ingresado esté de acuerdo con los requisitos del tipo de campo.

pattern: El atributo pattern es para propósitos de validación. Usa expresiones regulares para personalizar
reglas de validación (estas expresiones se estudian a profundidad más adelante).

form: El atributo form es una adición útil que nos permite declarar elementos para un formulario fuera del
ámbito de las etiquetas <form>. Hasta ahora, para construir un formulario teníamos que escribir las
etiquetas <form> de apertura y cierre y luego declarar cada elemento del formulario entre ellas. En HTML5
podemos insertar los elementos en cualquier parte del código y luego hacer referencia al formulario que
pertenecen usando su nombre y el atributo form.
<nav>
<input type="search" name="busqueda" id="busqueda" form="formulario" >
</nav>
<form name="formulario" id="formulario" method="get" action="prueba.php">
<input type="text" name="nombre" id="nombre">
<input type="submit" value="Enviar">
</form>
La etiqueta <datalist>
El campo de tipo datalist permite disponer de un campo de inserción libre y, al mismo tiempo, de las
funcionalidades de un menú desplegable. De este modo el usuario podrá insertar un valor personalizado o bien
elegir un valor entre las sugerencias propuestas.
El elemento datalist utiliza los elementos habituales option para las sugerencias. Tendremos que usar
simultáneamente un campo de tipo text y un elemento datalist. La relación se establece con el valor del
atributo list de input y el id de datalist.
A continuación se presenta un ejemplo del uso de esta etiqueta:
<form action="recepcion.php">
<label>Sistema operativo preferido:</label>
<br>
<input id=“sistema_op" type="text" list="OS">
<datalist id="OS">
<option value="Mac OS">
<option value="Windows">
<option value="Linux">
</datalist>
<input type="submit" value="Aceptar">
</form>
9
La etiqueta <button>
La etiqueta <button>, permite definir un botón sobre el cual se puede realizar pulsaciones de ratón. Si la
etiqueta se utiliza dentro de un formulario se pueden utilizar prácticamente los mismos atributos que los
explicados anteriormente para la etiqueta <input>, con el atributo type, con un valor de button. Aunque se
recomienda que para incluir botones en el formulario se utilice la etiqueta <input>.
La diferencia con los botones de un formulario, es que con esta etiqueta se pueden utilizar en el contenido de
la etiqueta texto o imágenes.
<button type="button">Boton Normal</button><br>
<button type="button">
<img src="images.jpg" width="32" height="32">
</button>
La etiqueta <FIELDSET>
Su función es la de realizar grupos de campos dentro del formulario. Estos grupos de campos son
representados mediante un marco con borde alrededor de los campos contenidos en el grupo.
La etiqueta suele ir acompañada de otra etiqueta denomina <legend>, la cual permite establecer el título del
grupo de elementos en el contenido de la misma, y se suele utilizar justo despues de la etiqueta de apertura
del grupo.
A continuación se presenta un ejemplo del uso de las etiquetas fieldset y legend:
<form action="recepcion.php">
<fieldset>
<legend>Datos personales</legend>
<label>Nombre</label>
<input type="text" name="nombre">
<br>
<br>
<label>Apellido</label>
<input type="text" name="apellido">
<br>
</fieldset>
<br>
<input type="submit" value="Aceptar">
</form>
La etiqueta <LABEL>
La etiqueta <label>, permite definir una etiqueta o título para los campos de tipo input, el incluir un título en el
formulario no realiza ninguna función especial sobre los campos del mismo, pero sí de cara al usuario
representa una mejora en la presentación del formulario, ya que también al incluir los títulos de los campos, el
usuario puede realizar un clic sobre los mismos, permitiendo activar o recibir el foco del control asociado al
título.
10
La etiqueta <SELECT>
La etiqueta <select>, permite la creación de listas desplegables o listas abiertas, desde la que poder realizar la
selección de una o varias de las opciones que se presentan en la misma.
La etiqueta se configura en conjunto con otra etiqueta denominada <option>, la cual permite especificar las
opciones que aparecen en la lista.
<form action="recepcion.php">
<select name="universidad" id="universidad">
<option>Universidad Don Bosco</option>
<option>Universidad Nacional</option>
<option>Universidad Centroamericana</option>
<option>Universidad Francisco Gavidia</option>
</select>
<input type="submit" value="Aceptar">
</form>
El atributo size especifica el número de líneas. Si este número es inferior al número de opciones, aparecerá una
barra de visualización vertical.
El atributo multiple permite múltiples selecciones simultáneas.
<form action="recepcion.php">
<select name="equipos" id="equipos" size="3" multiple>
<option>Alianza</option>
<option>Fas</option>
<option>Aguila</option>
<option>Juventud independiente</option>
</select>
<input type="submit" value="Aceptar">
</form>
También es posible incluir las opciones como contenido de otra etiqueta denominada <optgroup>, la cual
permite especificar grupos de opciones, agrupando las opciones comunes por grupos. Esta última etiqueta solo
dispone de un atributo: label, el cual permite especificar el valor del nombre del grupo.
<form action="recepcion.php">
<select name="equipos" id="equipos">
<optgroup label="Equipos buenos">
<option>Barcelona</option>
<option>Bayer Munich</option>
<option>Juventus</option>
</optgroup>
<optgroup label="Equipos regulares">
<option>Atletico de Madrid</option>
<option>Arsenal</option>
<option>Inter de Milan</option>
</optgroup>
11
<optgroup label="Equipos malos">
<option>Real Madrid</option>
<option>Fas</option>
<option>Aguila</option>
</optgroup>
</select>
<input type="submit" value="Aceptar">
</form>
La etiqueta <textarea>
Este elemento permite crear un control de entrada de texto de varias líneas. El contenido que se coloca entre
las etiquetas <TEXTAREA> … </TEXTAREA> debe ser utilizado como valor inicial para el control y debe aparecer
dentro del control cuando se muestre en el navegador.
Los atributos del elemento TEXTAREA se describen a continuación:
 name y id: Asigna un nombre único al control y establece un identificador único para el control,
respectivamente.
 rows: especificar el número de líneas de texto visibles. Los usuarios podrán introducir más líneas que
las visibles, para ello el navegador debe proporcionar un mecanismo para desplazarse a las líneas que
no sean visibles en un momento determinado.
 cols: establece el ancho visible para el control, medido en número de caracteres. También se pueden
ingresar líneas de mayor longitud que la visible. El navegador debe hacer aparecer una barra de
desplazamiento para poder desplazarse.
A continuación se muestra un ejemplo de la utilización de esta
etiqueta:
<form action="prueba.php">
<label for="descripcion">Descripcion</label><br>
<textarea name="descripcion" id="descripcion" cols="30"
rows="10">
Mi nombre es Juan Perez
</textarea><br>
<input type="submit" value="Aceptar">
</form>
12
ESTILIZACIÓN DE FORMULARIOS
Añadiendo un pequeño relleno en los campos de texto
Por defecto, los campos de texto de los formularios no incluyen ningún espacio de relleno, por lo que el texto
introducido por el usuario aparece pegado a los bordes del cuadro de texto.
Añadiendo un pequeño padding a cada elemento
<input>, se mejora notablemente el aspecto del
formulario:
La regla CSS necesaria para mejorar el formulario es
muy sencilla:
form.elegante input {
padding: 0.3em;
}
Labels alineados y formateados
Los elementos <input> y <label> de los formularios son elementos en línea, por lo que el aspecto que muestran
los formularios por defecto, es similar al de la siguiente imagen:
<form action="registro.php" method="post">
<fieldset>
<legend>Registro del alumno</legend>
<label for="nombre">Nombres:</label>
<input type="text" name="nombre" id="nombre">
<label for="apellido">Apellidos:</label>
<input type="text" name="apellido" id="apellido">
<label for="carnet">Carnet:</label>
<input type="text" name="carnet" id="carnet">
<input type="submit" value="Registrarme">
</fieldset>
</form>
Aprovechando los elementos <label>, se pueden aplicar unos estilos CSS sencillos que permitan mostrar el
formulario con el aspecto de la siguiente imagen:
13
En primer lugar, se muestran los elementos <label> como elementos de bloque, para que añadan una
separación para cada campo del formulario. Además, se añade un margen superior para no mostrar juntas
todas las filas del formulario:
label {
display: block;
margin: .5em 0 0 0;
}
El botón del formulario también se muestra como un elemento de bloque y se le añade un margen para darle
el aspecto final deseado:
input[type="submit"]{
display: block;
margin: 1em 0;
}
Alineando labels y controles
En ocasiones, es más útil mostrar todos los campos del formulario con su <label> alineada a la izquierda y el
campo del formulario a la derecha de cada <label>, como muestra la siguiente imagen:
Para mostrar un formulario tal y como aparece en la imagen anterior se tienen dos opciones:
1. La opción menos elegante consiste en insertar una tabla sin borde y con dos columnas: en una columna
se mostrarán los labels y en la columna se colocarán los controles. Luego basta con controlar la
anchura de las columnas de la tabla para conseguir una alineación perfecta.
2. La segunda opción consiste en añadir un nuevo elemento (<div> que encierre a cada uno de los campos
del formulario (<label> y <input>). El esquema de la solución propuesta es el siguiente:
14
Por tanto, en el código HTML del formulario anterior se añaden los elementos <div>:
<form action="registro.php" method="post">
<fieldset>
<legend>Registro del alumno</legend>
<div>
<label for="nombre">Nombres:</label>
<input type="text" name="nombre" id="nombre">
</div>
<div>
<label for="apellido">Apellidos:</label>
<input type="text" name="apellido" id="apellido">
</div>
<div>
<label for="carnet">Carnet:</label>
<input type="text" name="carnet" id="carnet">
</div>
<input type="submit" value="Registrarme">
</fieldset>
</form>
Y en el código CSS se añaden las reglas necesarias para alinear los campos del formulario:
form div{
margin: 0.5em 0;
}
form label{
display: block;
margin: 0.5em 0 0 0;
width: 25%;
float: left;
}
Resaltar el campo seleccionado
Una de las mejoras más útiles para los formularios HTML consiste en resaltar de alguna forma especial el
campo en el que el usuario está introduciendo datos. Para ello, CSS define la pseudo-clase :focus, que permite
aplicar estilos especiales al elemento que en ese momento tiene el foco o atención del usuario.
Añadiendo la pseudo-clase :focus después del
selector normal, el navegador se encarga de
aplicar esos estilos cuando el usuario activa el
elemento:
input:focus {
border: 2px solid navy;
}
15
Pseudo-clase :required
Utilizado para seleccionar elementos requeridos, más específicamente, se utiliza para seleccionar los
elementos de un formulario que a los que se le han establecido el atributo required.
En el siguiente ejemplo se le coloca una pequeña imagen
de un asterisco a todos los campos obligatorios.
form input:required{
background: #fff url(red-asterisk.png) no-repeat 98%
center;
}
Pseudo-clase :optional
Esta pseudo-clase se utiliza para seleccionar los campos NO requeridos de un formulario.
En el siguiente ejemplo se le coloca un borde de color
naranja a los campos de texto optativos (no
obligatorios).
form input [type="text"]:optional{
border-color: orange;
}
Pseudo-clase :invalid
Pseudo-clase utilizada para seleccionar y dar estilo a los elementos input cuyos valores NO sean validos de
acuerdo a su tipo especificado en el atributo type.
En el siguiente ejemplo se combina el uso de las pseudo
clases :invalid y :focus para estilizar los campos de texto
que tengan el “foco” y que posean un valor no válido.
form input:focus:invalid {
background: url(rojo.png) no-repeat 98%
center;
}
Pseudo-clase :valid
Pseudo-clase utilizada para seleccionar y dar estilo a los elementos input cuyos valores sean validos de acuerdo
a su tipo especificado en el atributo type.
En el siguiente ejemplo se combina el uso de las pseudo
clases :valid y :focus para estilizar los campos de texto
que tengan el “foco” y que posean un valor válido.
form input:focus:valid {
background: url(verde.png) no-repeat 98% center;
}
16
Pseudo-clase :checked
Se utiliza para seleccionar checkbox, y option en un select, en el estado seleccionado (ejemplo al hacer click a
un checkbox).
Como ejemplo, considérese el siguiente código HTML en el que se inserta un input de tipo checkbox en el
formulario del ejemplo anterior.
<div>
<input type="checkbox" name="terminos" id="terminos">
<span>Acepto los términos</span>
</div>
Con la siguiente regla de estilo se selecciona al elemento span que es hermano del checkbox seleccionado y se
le cambia el color de fondo.
form input [type = "checkbox"]:checked + span{
background-color: yellow;
}
El formulario anterior luciría de la siguiente manera según el checkbox este seleccionado o no.
Pseudo-clases :in-range y :out-of-range
Estas pseudo-clases son utilizadas para dar estilos a elementos que tienen rangos de alcance, cuando:
 El valor del elemento destinado a este se encuentra dentro de los límites del rango especificado ( :inrange ).
 El valor que el elemento destinado a este se encuentra fuera de los límites del rango especificado (
:out-of-range ).
Como ejemplo, considérese el siguiente código HTML en el que se inserta un input de tipo number en el
formulario del ejemplo anterior.
<div>
<label for="edad">Edad: </label>
<input type="number" min="18" max="30" step="2"
</div>
17
value="25" id="edad" />
Con las siguientes reglas de estilo se selecciona el input con id “edad” y se le coloca un color de fondo distinto
cuando obtiene el foco dependiendo de si el valor seleccionado está dentro del rango o fuera de él (estos
rangos se definen con el atributo min y max del input de tipo number).
input#edad:focus:out-of-range {
background-color: lightpink;
}
input#edad:focus:in-range {
background-color: lightgreen;
}
VALIDACIÓN DE FORMULARIOS CON HTML5
HTML5 nos permite definir patrones de validación para los diferentes campos de un formulario sin utilizar ni
una sola línea de javascript. Esta característica nos permite ahorrarnos algunas solicitudes inadecuadas y el
consiguiente gasto innecesario de recursos del servidor, aunque sin duda la principal ventaja es la mejora de la
experiencia del usuario.
Es importante anotar que la validación de formularios con HTML5, al igual que la validación con javascript, se
realiza en el lado del cliente (navegador web) y, por tanto, puede ser modificada por el usuario o ignorada
totalmente. Esto quiere decir que las cuestiones relativas a la seguridad del formulario no deben basarse en
esta validación ni es sustituta de la validación server-side.
El atributo required
Este atributo se utiliza para decir al navegador los campos
del formulario que son requeridos de forma obligatoria, es
decir, que no pueden quedar vacíos. Basta con poner
required o required="required".
<div>
<label for="nombre">Nombres:</label>
<input type="text" name="nombre" id="nombre"
required>
</div>
18
El atributo title
En el momento en que se encuentra un error de validación se ejecuta la acción por defecto del navegador,
normalmente aparece un pequeño globo emergente (tooltip) conteniendo un texto de advertencia. Añadiendo
el atributo title en la etiqueta <input>, se puede
extender la información mostrada.
<div>
<label for="nombre">Nombres:</label>
<input type="text" name="nombre" id="nombre“
required title="Debes ingresar tu nombre">
</div>
El atributo type
Como ya se vio anteriormente, la etiqueta input admite muchos valores en su atributo type para cambiar el
tipo de datos a recibir (email, contraseñas, url, números, etc.)
Si los datos introducidos en el campo del formulario no
coinciden con el tipo especificado, el navegador lanzará un
aviso al usuario y el formulario no se enviará. Por ejemplo,
podemos requerir que se introduzca una dirección de correo
electrónico:
<input type="email" name="email">
Expresiones regulares: Atributo pattern
El atributo pattern es para propósitos de validación. Usa expresiones regulares para personalizar reglas de
validación. Algunos de los tipos de campo ya estudiados validan cadenas de texto específicas (correos, url, etc.)
pero no permiten hacer validaciones personalizadas, como por ejemplo el carnet de la UDB que consta de dos
letras y seis dígitos. No existe ningún tipo de campo predeterminado para esta clase de entrada.
El atributo pattern nos permite crear nuestro propio tipo de campo para controlar esta clase de valores no
ordinarios. Es posible incluso incluir un atributo title para personalizar mensajes de error.
Retomando el ejemplo del carnet de la UDB, el pattern que permitiría validar dicha entrada seria el siguiente:
[A-Za-z]{2}[0-9]{6}
Lo cual indica que se espera recibir dos letras (en
mayúsculas o minusculas) y 6 dígitos.
El codigo HTML para validar ese campo sería
entonces:
<input type="text" name="carnet" id="carnet"
required pattern="[A-Za-z]{2}[0-9]{6}" title="2
letras y 6 digitos">
19
Estudiemos paso a paso los elementos para construir una expresión regular:
Clases de caracteres
Las clases de caracteres se utilizan para definir el contenido de un patrón. Esto es, lo que el patrón debe
buscar.
Operadores lógicos
Los operadores lógicos de la siguiente tabla nos permiten combinar caracteres o clases de caracteres para
formar expresiones regulares más complejas.
Cuantificadores
Los cuantificadores definen cuantas veces aparecerá un elemento en una expresión.
20
Metacaracteres de frontera
Los metacaracteres de frontera nos permiten especificar en qué parte de una cadena buscar por una
coincidencia con la expresión regular.
 ˆ indica que el valor deberá comenzar obligatoriamente por los elementos especificados justo a
continuación. ˆ[0-9]{2} indica que el valor deberá comenzar con dos cifras para que sea válido.
 $ indica que el valor deberá terminar obligatoriamente por los elementos específicos que la preceden.
[a-z]$ indica que el valor deberá terminar con una letra en minúscula para que sea válido.
Ejemplos
1. Comprobar si el valor del campo de texto posee el patrón “abc”
<input type="text" required pattern="abc">
2. Comprobar si el valor del campo de texto está formado por un mínimo de 5 letras mayúsculas o
minúsculas y un máximo de 10.
<input type="text" required pattern="[a-zA-Z]{5,10}">
3. Comprobar si el valor del campo de texto solo contienen los caracteres a ó b
<input type="text" required pattern="(a|b)+">
III. MATERIALES Y EQUIPO
No.
1
2
3
4
Cantidad
Descripción
1
PC con uno de los editores de páginas Web: Sublime Text, Brackets, Notepad ++,
BlueFish y HTML Kit y cualquiera de los navegadores siguiente: Internet Explorer 7
u 8, Firefox (última versión disponible), Google Chrome (última versión
disponible), Opera (última versión disponible), Safari (última versión disponible).
1
Guía de Laboratorio #8 de Lenguajes de Marcado y Estilo Web
1
Recursos para laboratorio práctico.
1
Memoria USB
21
IV. PROCEDIMIENTO
INDICACIONES GENERALES
1. Crear una carpeta en “mis documentos” y colocarle el nombre N°Carnet_Guia8_LME, Nota: Cambiar
N°Carnet por su número de carnet brindado por la Universidad.
2. Descargar los recursos de la guía, descomprimirlos y colocar las carpetas img y css dentro de la carpeta
creada en el paso anterior.
Ejercicio 1. Construyendo un formulario alineado sin usar tablas.
1. Cree un nuevo archivo html con nombre: Ejercicio1.html.
2. Guarde el archivo en su carpeta de trabajo.
3. Realizar la maquetación web según lo indica la siguiente imagen.
4. Colocar el contenido de las etiquetas según indica la siguiente tabla.
Etiquetas
input
input
Contenido
Dentro de fieldset
Tipo: imagen
ubicación de archivo: img/user.png
clase: img
<input type=image src="img/user.png" class="img">
Tipo: texto
Identificador: nombre
Valor: vacio
Validación:^[a-zA-Z\s]+$
Título: Solo se acepta letras
Clase: control
22
Nombre de marcado de posición: Nombre
Campo requerido
//Salto de linea al final de etiqueta input
input
input
input
input
input
input
input
<input type="text" id="nombre" value="" pattern="^[a-zA-Z\s]+$"
title="Solo se acepta letras" class="control" placeholder="Nombre"
required /><br>
Tipo: imagen
ubicación de archivo: img/tel.png
clase: img
Tipo: tel
Identificador: telefono
Valor: vacio
Validación: ^[0-9]{4}-?[0-9]{4}$
Título: Solo acepta números en el siguiente formato: 2222-2222
Clase: control
Nombre de marcado de posición: Número de teléfono
Campo requerido
//Salto de línea al final de etiqueta input
Tipo: imagen
ubicación de archivo: img/email.png
clase: img
Tipo: correo
Identificador: correo
Valor: vacio
Título: Formato de correo: NombreCorreo@dominio
Clase: control
Nombre de marcado de posición: Correo Electrónico
Campo requerido
//Salto de línea al final de etiqueta input
Tipo: imagen
ubicación de archivo: img/pass.png
clase: img
Tipo: contraseña
Identificador: password
Valor: vacio
Validación: ((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15})
Título: Su contraseña debe ser de 6 a 15 caracteres y deben incluir
una letra mayúscula, minúscula y un numero
Clase: control
Nombre de marcado de posición: Contraseña
Campo requerido
//Salto de linea al final de etiqueta input
Tipo: checkbox
Valor: acepto
Clase: terminos
P
<p class="terminos">Acepto Términos, Condiciones y
Política de Privacidad</p>
button
Identificador: botón
Tipo: submit
<button id="boton" type="submit">Crear Cuenta</button>
23
5. Cree un nuevo archivo de tipo css con nombre estilo.css
6. Guardar el archivo en la carpeta llamada css dentro de su carpeta de trabajo.
7. Realizar las reglas de estilo necesarias según indique la siguiente tabla:
8.
Selector
#login
#login form
#logindatos
#login .img
.terminos
p.terminos
#login input
#login input.terminos
.control
.boton
.formdatos
.formdatos form
.formdatos fieldset
.formdatos img
.formdatos button
.formdatos p
form
:required
:invalid
h1
Propiedades
Margen superior:4%, Margen izquierdo:32%; Margen
derecho:32%
Ancho:400px, alineación de texto: center
Borde:none, margen superior:5px, bordes redondeados:10px
Margen: 18px, posición: absolute, ancho 30px, alto 30px,
bordes redondeados:0px
Vista: inline
Tamaño de letra: 11px, color de letra:#fff
Bordes redondeados: 15px, ancho:300px, alto:35px, margen
:10px
Ancho:20px, alto: 20px
área de relleno izquierdo: 45px, tamaño de letra: 18px
Color
de
fondo:
rgba(164,179,87,1),
bordes
redondeados:15px, ancho:150px, alto:40px, color de letra:
#fff, tipo de letra: Century Gothic, margen superior: 3px,
margen izquierdo:185px;
color de letra: #fff
ancho:1115px, alto: 500px, borde redondeados:15px,
relleno:22px, margen: 20px auto;
Tipo de letra: Century Gothic, Área de relleno: 12px, float:left,
ancho:25%, margen superior:5px, bordes redondeados: 10px,
alto:332px, margen izquierdo:13px
Float:left, ancho:90px, alto:70px, borde redondeados:5px,
margen: 0px 22px
Margen superior:3px, margen izquierdo: 830px
Margen superior:15%, Área de relleno inferior:15%, tamaño
de letra: 48px, alineación de texto: center.
Tipo de letra: Century Gothic, color de fondo:
rgba(76,76,76,1), sombreado de caja: 10px 10px 112px 0px
rgba(0,0,0,0.75);
Realizar prefijos de sombreado de caja para mozilla , chrome
Bordes redondeados: 15px, caja de sombreado: 0px 0px 5px
#808080
Bordes redondeados: 15px, color de borde:
rgba(164,179,87,1)
Area de relleno superior: 6px, color de letra: #fff
24
9. Agregar el llamado al estilo de estilo .css dentro de la etiqueta <head> de nuestra página web
10. Visualizar el resultado de la página web en el navegador.
11. Probar las validaciones del formulario, y comprobar que el formulario nos enviara a página
Ejercicio2.html hasta que todos los datos estén con el formato correcto.
Ejercicio #2. Controles de Formulario
1. Cree un nuevo archivo html con nombre: Ejercicio2.html.
2. Guarde el archivo en su carpeta de trabajo.
3. Realizar la maquetación web según lo indica la siguiente imagen.
25
4. Colocar el contenido de las etiquetas según indica la siguiente tabla.
Etiquetas
Contenido
Dentro de fieldset datos
Dentro de fieldset temas
Dentro de fieldset aficiones
26
5. Visualizar el resultado de la página web en el navegador.
Ejercicio #3. Envió
1. Cree un nuevo archivo html con nombre: Ejercicio3.html.
2. Guarde el archivo en su carpeta de trabajo
3. Realizar la maquetación web según lo indica la siguiente imagen.
4. Visualizar el resultado de la página web en el navegador.
27
Ejercicio # 4. Diseñando un formulario de login
1.
2.
3.
4.
5.
Cree un nuevo archivo html con nombre: login.html.
Guarde el archivo en su carpeta de trabajo
Escriba la estructura básica de un archivo html dentro de archivo creado en el paso 1.
Cambiar el título de la página web por el texto “Ejemplo de formulario de logueo”
Colocar el siguiente código HTML dentro del body de su página web
28
6. Crear el archivo logueo.css y guardarlo en la carpeta css dentro de su carpeta de trabajo.
7. Vincular la hoja de estilo con su pagina web.
8. Digitar las siguientes reglas de estilo dentro del archivo creado en el paso anterior.
9. Comenzaremos digitando los estilos generales para la página y el formulario
10. A continuación colocamos los estilos para la sección del formulario con la clase header
11. Ahora procedemos a estilizar el div con clase “login” dándole un pequeño relleno horizontal.
29
12. Procedemos darle estilo a los iconos que se mostraran a la izquierda de los campos de texto.
13. A continuación procedemos a darle estilos a los campos de texto a los cuales se les ha asignado la clase
“text”
14. Visualice el avance del ejercicio en su navegador. Notará que cada uno de los campos de texto tienen
una altura muy pequeña. Para aumentar dicha usaremos la propiedad line-height y haremos que los
span y los input que son elementos en línea puedan aumentar su alto sin necesidad de insertar un salto
de línea (esto se consigue con display: inline-block).
15. Ahora le daremos estilo al botón de tipo submit al cual se le ha aplicado la clase btn
30
16. Otro de los errores del formulario es que aún se ven las viñetas de los elementos de lista. Para corregir
esto digitaremos las siguientes reglas de estilo:
17. A continuación procedemos a darle estilo a las opciones “Recordarme” y “Has olvidado tu contraseña?”
18. Ahora le daremos estilo a la sección que contiene los botones para iniciar sesión mediante redes
sociales.
31
19. Finalmente la daremos estilo a la parte inferior del formulario.
32
20. Visualizar los resultados en el navegador. El formulario debería lucir de la siguiente manera:
33
V. ANALISIS DE RESULTADOS
1. Agregar validaciones en el formulario del ejercicio2.html, hacer que los datos de fecha, edad y
dirección sean datos requeridos por los formularios, además agregar los siguientes patrones de
validación en los siguientes campos:
Nacionalidad
Solo letras:
^[a-zA-Z\s]+$
Edad
Solo números:
^(?:\+|-)?\d+$
El instructor evaluará el desempeño de su trabajo dentro la clase. Estos ejercicios se evaluarán en la misma
hora de clase.
VI. EJERCICIOS COMPLEMENTARIOS
1. Presentar un ejemplo en el que se usen todas las pseudo-clases para formularios (:focus, :valid, :invalid;
:required, :optional, :checked, in-range y :out-of-range). Puede basarse en la información mostrada en
la introducción teórica de esta guía. El formulario debe usar al menos 10 tipos de campos y debe
estilizarse de forma que los label y controles este alineados (no puede usar tablas conseguir la
alineación). Se evaluará la estética del formulario presentado.
2. Investigar la forma de crear formularios con el framework bootstrap. Presente al menos dos ejemplos
en los que apliquen los elementos investigados.
Fecha de entrega: Semana de regreso de vacaciones.
34