Los programas albergados en el servidor suelen ser scripts CGI, y por supuesto no vamos a investigarlos en un curso de JavaScript. Solamente decir que existen infinidad de ellos y que, en general, la mayoría de proveedores de espacio web tienen alguno disponible para sus usuarios, con instrucciones de uso incluidas.
Los programas que se ejecutan en
el navegador suelen estar escritos en JavaScript, y realizan tareas simples
de validación. En muchas ocasiones están combinados con
scripts CGI que modifican el mensaje generado por un formulario para
facilitar su lectura y manejo.
El array document.forms
contiene todos los formularios de un documento. Así, se accedería
al primer formulario definido como document.forms[0]. Sin embargo,
si usamos el parámetro NAME:
<FORM NAME="miFormulario">
Vamos a ver ahora el código de nuestro primer formulario con validación, que comprueba si tu la dirección de correo electrónico del usuario es correcta:
<HTML>
<HEAD>
<TITLE>Ejemplo de formularios</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function validar(direccion) {
if (direccion.indexOf("@") != -1)
return true;
else {
alert('Debe escribir una dirección válida');
return false;
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="miFormulario"
METHOD="POST"
ACTION="mailto:yo@miproveedor.mipais"
ENCTYPE="text/plain"
onSubmit="return validar(this.email.value)">
Mandame tu e-mail: <INPUT NAME="email" TYPE="text"><BR>
<INPUT TYPE="submit" VALUE="Mandame tu e-mail">
</FORM>
</BODY>
</HTML>
El código es sencillo: el
código llamado por el controlador de evento onSubmit debe
devolver false si deseamos que el formulario no sea enviado.
Así pues, llamamos a la función que comprueba si hay alguna
arroba en el campo email del formulario.
La manera de llamar a esta función es quizás lo más complicado. La función validar recibe una cadena de caracteres, devolviendo verdadero o falso dependiendo de que haya o no una arroba dentro de ella. El controlador utiliza para llamar a esta función lo siguiente:
this.email.value
| Tipo de campo | Atributo | Descripción |
|---|---|---|
| Hidden, Password, Text, FileUpload | value | Contiene el texto tecleado por el usuario |
| Checkbox, Radio | checked | Verdadero si el control de confirmación (o un botón de radio individual) está activado |
| Option | selected | Verdadero si la opción esta seleccionada dentro de su lista |
function averiguarNota(examen) {
var resultado=0;
for (i=0;i<examen.elements.length;i++)
if ((examen.elements[i].type=="radio") &&
(examen.elements[i].value=="bien") &&
(examen.elements[i].checked))
resultado++;
alert("Acertaste "+resultado+" de 5 preguntas.");
return false;
}
y cada pregunta tiene la siguiente estructura:
<BR>Multivac es <BR><INPUT TYPE="radio" NAME="Respuesta1" VALUE="mal"> una porquería <BR><INPUT TYPE="radio" NAME="Respuesta1" VALUE="bien"> el mejor <BR><INPUT TYPE="radio" NAME="Respuesta1" VALUE="mal"> algo poco reseñableLuego la función es llamada desde el evento submit y ya está. Podría haberse hecho también desde el evento click de un botón... siempre hay más de una manera de hacer las cosas.