Una de las técnicas más utilizadas para que una página web tenga cierto grado de interactividad es el uso de los llamados formularios que son los que nos permiten buscar, hacer pedidos, escribir mensajes, suscribirse, etc.

Aunque las etiquetas HTML para formularios no son muchas, tienen un número muy amplio de atributos y, algunos de ellos, son muy complejos.

Para sólo dar una idea de su funcionamiento, un formulario se crea con la etiqueta <FORM> </FORM>, dentro de la cual se insertan otras que crean los controles: botones, entrada de texto, casillas de verificación, menúes, etc.

Estos son los atributos del elemento FORM:


accept-charset=tipo lista de codificaciones caracteres soportadas
accept=tipo lista tipos MIME para subir ficheros
action=URL proceso en el servidor
enctype=tipo
method=GET | POST método HTTP usado para enviar el formulario
name=texto nombre del formulario
onreset=script el formulario fue reinicializado
onsubmit=script el formulario fue enviado
target=destino representar en este marco

Veamos un ejemplo simple, supongamos que deseamos crear una lista de usuarios. Cada uno deberá introducir su nombre y dirección de email y pulsar un botón para enviarnos los datos. Estos datos los recibiremos directamente en nuestro correo,y con ellos confeccionáramos la lista manualmente.

La estructura general de ese formulario sería:

<FORM ACTION="mailto:dirección_de_email”
         METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
    [elementos para introducir datos]
    [botón de envío]
</FORM>

En este caso, el atributo ACTION indica la acción a efectuar (enviar datos por email). El atributo METHOD=POST indica que los datos sean enviados inmediatamente apenas se pulse el botón de envio (no se analizan ni verifican). El atributo ENCTYPE=”TEXT/PLAIN” hace que sea enviado como texto plano, sin codificar.

Los elementos para introducir los datos pueden ser de diferente tipo, texto, menúes y botones. En todos los casos, se utiliza la etiqueta <INPUT> </INPUT>:

<INPUT TYPE="xxx" NAME="yyy" VALUE="zzz">

En donde:
xxx es una palabra que indica el tipo de introducción
yyy es el nombre que le asignamos a la variable de introducción del dato
zzz es la palabra asociada a un elemento

¿Confuso?, no es para menos, veamos uno por uno:

Para introducir datos por medio de una línea de texto, la palabra clave es INPUT TYPE=”text” y, el VALUE no se utiliza. Por ejemplo solicitamos que se introduzca un nombre:

<FORM ACTION="mailto:dirección_de_email"
    METHOD="POST" ENCTYPE="TEXT/PLAIN">
    Escriba su nombre:<BR>
    <INPUT TYPE="text" NAME="nombre">
</FORM>

Se ve así:

Escriba su nombre:

La longitud del formulario es, por defecto, de 20 caracteres. Se puede variar incluyendo en la etiqueta el atributo SIZE=”cantidad”. Sea cual sea la longitud del formulario, si no se indica nada, puede introducirse cualquier cantidad de caracteres. Se puede limitar incluyendo en la etiqueta el atributo MAXLENGTH=”cantidad”.

<FORM ACTION="mailto:dirección_de_email"
    METHOD="POST" ENCTYPE="TEXT/PLAIN">
    Escriba su nombre (hasta 4 caracteres):<BR>
    <INPUT TYPE="text" NAME="nombre SIZE="20" MAXLENGTH="4">
</FORM>
Escriba su nombre (hasta 4 caracteres):

También es posible introducir un texto y que los caracteres sean irreconocible, por ejemplo, que se vean como los típicos asteriscos que aparecen cuando se nos pide ingresar una contraseña. Para esto, hay que cambiar el atributo TYPE=”text” por el atributo TYPE=”password”.

<FORM ACTION="mailto:dirección_de_email"
    METHOD="POST" ENCTYPE="TEXT/PLAIN">
    Ingrese su contraseña (hasta 8 caracteres):<BR>
    <INPUT TYPE="password" NAME="nombre SIZE="20" MAXLENGTH="8">
</FORM>
Ingrese su contraseña (hasta 8 caracteres):

Si queremos que el usuario confirme una opción determinada, podemos usar un formulario de confirmación, o checkbox, que se consigue con la etiqueta INPUT TYPE=”checkbox”.

<FORM ACTION="mailto:dirección_de_email”
     METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
<INPUT TYPE=”checkbox” NAME=”Lista”>
    Incluir en la lista de correo
</FORM>
Incluir en la lista de correo

Si queremos que el formulario aparezca marcado por defecto, hay que añadir el atributo CHECKED dentro de la etiqueta.

<FORM ACTION="mailto:dirección_de_email”
    METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
    <INPUT TYPE=”checkbox” NAME=”Lista” CHECKED>
    Incluir en la lista de correo
</FORM>
Incluir en la lista de correo

Cuando queremos que el usuario elija una única opción entre varias, usamos los botones de radio, con la etiqueta INPUT TYPE=”radio"”.

<FORM ACTION="mailto:dirección_de_email”
    METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
    ¿Color preferido?<BR>
    <INPUT TYPE=”radio” NAME=”ColorPreferido” VALUE=”Rojo”
        CHECKED>  ROJO
    <INPUT TYPE=”radio” NAME=”ColorPreferido” VALUE=”Verde”>  VERDE
    <INPUT TYPE=”radio” NAME=”ColorPreferido” VALUE=”Azul”>  AZUL
</FORM>
¿Color preferido?

ROJO
VERDE
AZUL

El atributo opcional CHECKED se ha añadido en la primera etiqueta para que aparezca marcada por defecto.

Todo esto muy bien pero ¿cómo se envian los datos?

El elemento esencial en cualquier formulario es el botón de envío que se consigue con la etiqueta INPUT TYPE=”submit”.

<FORM ACTION="mailto:dirección_de_email"
    METHOD="POST" ENCTYPE="TEXT/PLAIN">
    Escriba su nombre:<BR>
    <INPUT TYPE="text" NAME="nombre">
    <INPUT TYPE="submit" VALUE="Enviar datos">
</FORM>

Otro botón que puede agregarse con facilidad es el de borrado de los datos introducidos. Es muy similar al anterior, INPUT TYPE=”reset”.

<FORM ACTION="mailto:dirección_de_email"
    METHOD="POST" ENCTYPE="TEXT/PLAIN">
    Escriba su nombre:<BR>
    <INPUT TYPE="text" NAME="nombre">
    <INPUT TYPE="reset" VALUE="Borrar datos">
</FORM>
Escriba su nombre:

El botón de envío puede sustituirse por una imagen utilizando la etiqueta:

INPUT TYPE=”submit” VALUE=”Enviar datos”

por

INPUT TYPE=”image” SRC=”URLimagen”

<FORM ACTION="mailto:dirección_de_email”
    METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
    Escriba su nombre:<BR>
    <INPUT TYPE=”text” NAME=”nombre”>
    <INPUT TYPE=”image” SRC=”URLimagen” BORDER=0>
</FORM>
Escriba su nombre:


Un tipo de etiqueta INPUT muy común es el que contiene el atributo TYPE=”button”. Se utiliza para ejecutar rutinas script creadas por el usuario

    <INPUT TYPE=button VALUE="Pulsa para ir"
        onClick=".......">

Estos son los atributos del elemento INPUT:


accept=tipo lista de tipos MIME para subir ficheros
accesskey=carácter carácter de la tecla de accesibilidad
align=alineación alineación vertical u horizontal
alt=texto descripción corta
checked para radiobotones y casillas de verificación
disabled no disponible en este contexto
ismap=datao usar mapa de imágenes en servidor
maxlength=cantidad máximo de caracteres para campos de texto
name=texto enviar como parte del formulario
onblur=script el elemento perdió el foco
onchange=script el valor del elemento fue modificado
onfocus=script el foco se dirigió hacia el elemento
onselect=script se seleccionó parte de un texto
readonly para texto y contraseñas
size=cantidad específico de cada tipo de campo
src=URL para campos con imágenes
tabindex=cantidad posición en el orden de tabulación
type=tipo qué tipo de control hace falta
usemap=URL usar mapa de imágenes en el cliente
value=valor especificar para radiobotones y casillas de verificación

Una alternativa de la etiqueta INPUT es la etiqueta BUTTON, funcionan igual pero ofrecen más posibilidades gráficas. Por ejemplo, botones con relieve y un efecto visual al ser oprimidos.

<FORM ACTION="mailto:dirección_de_email”
    METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
    Escriba su nombre:<BR>
    <INPUT TYPE=”text” NAME=”nombre”>
    <BUTTON NAME=”enviar” VALUE=”Probar” TYPE=”button”>
        <IMG src=”URLimagen” />
    </BUTTON>
</FORM>
Escriba su nombre:


Estos son los atributos del elemento BUTTON:


accesskey=carácter carácter de la tecla de accesibilidad
disabled no disponible en este contexto
name=texto
onblur=script el elemento perdió el foco
onchange=script el valor del elemento fue modificado
onfocus=script el foco se dirigió hacia el elemento
tabindex=valor posición en el orden de tabulación
type=(button|submit|reset) para usar como botón de formulario
value=dato se manda al servidor cuando se envía

Cuando el texto a introducir es largo, por ejemplo un comentario, es conveniente utilizar un formulario de texto de líneas múltiples, esto se logra con la etiqueta TEXTAREA:

<TEXTAREA NAME="nombre" ROWS="cantidad" COLS="cantidad">

Donde ROWS representa la cantidad de filas (alto) y COLS la cantidad de columnas (ancho)

<FORM ACTION="mailto:dirección_de_email"
    METHOD="POST" ENCTYPE="TEXT/PLAIN">
    Introducir comentarios:<BR>
    <TEXTAREA NAME="Comentarios" ROWS="6" COLS="40">
    </TEXTAREA>
</FORM>

Que resulta:

Introducir comentarios:


Estos son los atributos del elemento TEXTAREA:


accesskey=carácter carácter de la tecla de accesibilidad
cols=cantidad ancho
disabled no disponible en este contexto
name=texto
onblur=script el elemento perdió el foco
onchange=script el valor del elemento fue modificado
onfocus=script el foco se dirigió hacia el elemento
onselect=script se seleccionó parte de un texto
readonly
rows=cantidad alto
tabindex=cantidad posición en el orden de tabulación

Si queremos que el usuario, en vez de introducir un texto, escoja entre varias opciones, podemos usar un formulario en forma de menú, para esto, tenemos la etiqueta SELECT y, dentro ella, cada opción se identifica con la etiqueta OPTION.

<FORM ACTION="mailto:dirección_de_email”
    METHOD=”POST” ENCTYPE=”TEXT/PLAIN”>
    Seleccione un color:<BR>
    <SELECT NAME=”EligeColor”>
        <OPTION>Rojo</OPTION>
        <OPTION>Verde</OPTION>
        <OPTION>Azul</OPTION>
    </SELECT >
</FORM>
Seleccione un color:

Por defecto, sólo se ve una opción, si queremos que sean visibles más, añadimos el atributos MULTIPLE SIZE=”cantidad”.

<SELECT NAME="EligeColor" MULTIPLE SIZE="2">
Seleccione un color:

Un menú también permite elegir entre distintas direcciones web y actuar como vínculos, para esto se agrega el atributo VALUE:

<OPTION VALUE="http://www.google.com.ar/">Google</OPTION>

Este es el resultado:


Estos son los atributos del elemento SELECT:


disabled no disponible en este contexto
multiple por defecto es selección simple
name=texto nombre del campo
onblur=script; el elemento perdió el foco
onchange=script; el valor del elemento fue modificado
onfocus=script; el foco se dirigió hacia el elemento
size=cantidad filas visibles
tabindex=número posición en el orden de tabulación

Estos son los atributos del elemento OPTION:


disabled no disponible en este contexto
label=texto para usar en menúes jerárquicos
selected
value=dato por defecto el contenido del elemento

Todos estos controles y etiquetas pueden ser utilizados dentro de un mismo formulario, por ejemplo:

Escriba su nombre:


Escriba su apellido:

Seleccione un color:

Introducir comentario:

El envío de formularios requiere autorización por parte del servidor. Si la página se encuentra en un proveedor de hosting, deberíamos consultar con el servicio técnico para que nos informen cuáles son las opciones disponibles. La mayoría de los proveedores tienen ya instalados los recursos para realizar estas tareas.