Validación de campos de formulario con JavaScript
- Introducción
- Evento onSubmit
- El objeto this
- Ejemplos
1. Introducción
Una de las grandes aportaciones de JavaScript a la creación de interfaces web
es la posibilidad de acceder al contenido de los campos de los formularios
para realizar acciones sobre los valores introducidos por el usuario, modificarlos y, en
última instancia, validarlos. La validación de los datos de un formulario mediante scripts
JavaScript no sustituye a la validación que debe realizarse, por motivos de seguridad,
en la aplicación del servidor que recibe la información. Sin embargo, al añadir
una validación local con JavaScript, la experiencia de usuario mejora notablemente,
al no ser necesario enviar los datos al servidor y esperar su respuesta para obtener
sólo un mensaje informando de la incorrección de la información suministrada. Resulta
frustrante cumplimentar un formulario, pulsar el botón enviar, y esperar 30 o 40 segundos
para saber que hemos introducido mal un campo.
JavaScript, desde sus comienzos, introdujo los mecanismos necesarios para validar
campos de formulario. Estas son algunas de las validaciones típicas:
- Comprobar que se han suministrado todos los campos obligatorios
- Comprobar que el formato de un campo es el esperado (fechas, teléfonos, etc.)
- Comprobar la validez (sintáctica) de las direcciones de correo y URLs
- Comprobar que no se sobrepasa la longitud, número de líneas o tamaño de la entrada
La siguiente guía ayuda a entender el funcionamiento de la validación de formularios
con JavaScript, y enlaza con numerosos ejemplos de nuestra sección de código que pueden ser
utilizados de modelo para crear la validación deseada.
2. Evento onSubmit
La validación de campos de formulario se basa en interceptar el momento en que el usuario
realiza el envío de los datos del formulario (es decir, pulsa sobre el botón de enviar). Como es
sabido, el botón de envío de datos se codifica con HTML mediante un tipo especial de objeto
de formulario, llamado
submit. El siguiente ejemplo muestra
un formulario con un botón de envío:
<form name="miFormulario" action="mailto:mi@mail.com">
<input type="submit" value="Enviar" name="enviar">
</form>
Cuando el usuario pulsa sobre el botón, el navegador ejecuta la acción codificada en el
parámetro
action del formulario. En el ejemplo anterior,
hemos incluido una acción de tipo
mailto:, es decir,
de envío de datos por correo electrónico. Lo normal es que la acción sea la invocación
de un programa que se ejecuta en el servidor remoto, y que recibe los datos de acuerdo
a la especificación CGI (
Common Gateway Interface). Para ampliar la información sobre
esta interfaz, consulta nuestro tutorial
¿Pero qué es eso de los CGIs?
Cuando el usuario pulsa sobre el botón de enviar, se genera el evento
submit, asociado al envío de datos de un formulario. JavaScript proporciona un mecanismo
para capturar este evento, lo que nos permite ejecutar un script justo antes de que se realice
el envío de los datos.
La forma de capturar el evento consiste en introducir el atributo
onSubmit
en la etiqueta del formulario cuyo evento
submit queremos capturar. De esta forma, para capturar el evento
submit del formulario del ejemplo anterior escribiríamos:
<form name="miFormulario" action="mailto:mi@mail.com"
onSubmit="alert('Has pulsado enviar.'); return false;">
<input type="submit" value="Enviar" name="enviar">
</form>
En esta nueva versión del formulario, al pulsar sobre el botón de envío se ejecutará el código
incluido como valor del atributo
onSubmit. En este caso, se trata
de un simple
alert() JavaScript informando de que se ha pulsado
sobre el botón de envío. Puede comprobarse el funcionamiento pulsando sobre el siguiente botón:
El código JavaScript que se ejecuta antes del envío del formulario es, en el ejemplo anterior,
un
alert(). Sin embargo, se puede observar que se ha añadido un
return false al final de la línea de código. Esta es la forma
de indicar al navegador si la validación ha sido correcta o incorrecta. Si el código JavaScript
(normalmente una función de validación) del atributo
onSubmit
devuelve
false, la
validación es incorrecta y el navegador no continúa con el envío del formulario tras ejecutar dicho
código. Por el contrario, si devuelve
true la validación es
correcta y el formulario se envía normalmente.
Podemos modificar el ejemplo anterior para devolver
true
tras mostrar el
alert-box. El ejemplo siguiente permite comprobar lo que sucede en ese
caso. Se abrirá el cliente de correo por defecto para iniciar el envío de un mensaje de correo
a la dirección suministrada como
mailto: en el atributo
action.
3. El objeto this
Normalmente, el evento
onSubmit ejecuta una función de
validación, como en el siguiente ejemplo:
<form name="miFormulario" action="mailto:mi@mail.com"
onSubmit="return Valida(this);">
<input type="submit" value="Enviar" name="enviar">
</form>
Esta función devolverá, como ya se ha dicho,
true si la
validación es correcta, y
false en caso contrario. Para poder
realizar la validación, la función debe trabajar sobre los objetos del formulario a validar,
para acceder a su valor y evaluarlo. Esto se consigue pasándole como parámetro el objeto
this, que referencia en este contexto al formulario desde
el que se invoca la función.
La función de validación accederá a los campos del formulario a partir del objeto
this. A continuación mostramos un ejemplo sencillo, en el que
se comprueba si el valor del campo de nombre
campo1 es igual a OK. En caso afirmativo,
la validación es correcta:
function Valida( formulario ) {
if (formulario.campo1.value == 'OK') {
return true
} else {
return false
}
}
4. Ejemplos
A continuación mostramos referencias a múltiples ejemplos prácticos de validación de
formularios con JavaScript, que pueden servir para entender mejor los conceptos
explicados en los párrafos anteriores:
4.1. Validacion de campos de texto no vacios
El ejemplo de
Validacion de campos de texto no vacios muestra cómo acceder a un campo de texto
para recorrerlo carácter a caráter verificando que no está vacío y que no contiene sólo caracteres
en blanco.
4.2. Validación de campos de fecha
El script de
Validacion de campo fecha es un ejemplo de validación de un campo que tiene que ajustarse
a un formato determinado (en este caso el formato fecha d-m-aaaa).
4.3. Validación de campos de hora
El script de
Validación de campos de hora tiene la particularidad de utilizar en la validación
expresiones regulares, lo que
simplifica enormemente el código.
4.4. Validación de campos de longitud fija
Una de las comprobaciones típicas sobre campos de formulario se refiere al número de
caracteres introducidos (para verificar que no supera cierto valor, o que es exactamente igual
a cierto número). Esta comprobación es útil, por ejemplo, para números de teléfono, códigos postales
o para números de identificación (como el DNI). El ejemplo
Validación de campos de longitud fija muestra cómo hacerlo con
expresiones regulares.
4.5. Validación de campos de correo electrónico
La
Validación de campos de correo electrónico es una de las más necesarias, ya que
muchos de los formularios que se utilizan en Internet solicitan este dato. Esta validación
es puramente sintáctica (es decir, se comprueba que el formato está de acuerdo con la RFC 821
de la mensajería electrónica de Internet), no siendo posible comprobar que la dirección
exista realmente.
4.6. Validación de campos sin usar expresiones regulares
Para quienes no dominen las expresiones regulares de JavaScript, pero quieran implementar
una función de validación a medida, el ejemplo
Validación de campos sin usar expresiones regulares les permitirá seleccionar los
caracteres válidos e introducirlos en una variable alfanumérica que se utilizará después
para la validación.
4.7. Validación de campo vacío, email y URL
El ejemplo de
Validación de campo vacío, email y URL es otro script de validación que no utiliza
expresiones regulares, y que muestra cómo se realiza la validación de campos de correo electrónico
y de URLs.
Es algo complicado el lenguaje JavaScript, pero es debido a que tiene otras palabas que no están en otros lenguajes, estas dos que están aquí (onSubmit y this) al principio no les entendí mucho porque en el código fuente se sustituyen por otras pero pude comprender el funcionamiento de las dos, el onSubmit sirve para extraer los valores que contenga el formularios para poder evaluarlos. El this sirve para indicar el objeto donde se realizará la acción, se sustituye por el nombre del objeto en el código fuente.
ResponderEliminar