Hace unas semanas comenzamos con el tema de expresiones regulares específicamente aplicadas a la validación de correo electrónico, el día de hoy vamos a ampliaremos el tema de validación de formularios.
El ejemplo con el que trabajaremos contiene tres campos: nombre, edad y correo electrónico, estos son los campos por validar, además incluiremos un botón imput tipo submit y uno tipo reset:
Lo primero es mostrar el código del formulario:
<!DOCTYPE html>
<html>
<head>
<title>Mi página</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link type="text/css" rel="stylesheet" href="estilos/estilo2.css" media="all">
<script src="js/functions.js" type="text/javascript"></script>
</head>
<body>
<form action="save.php" method="post" onsubmit="return validar();">
<span>nombre</span><br/>
<input type="text" id="name" name="name"></input>
<span id="error_name" class="error"></span> <br/>
<span>edad</span><br/>
<input type="text" id="age" name="age"></input>
<span id="error_age" class="error"></span><br/>
<span>e-mail</span><br/>
<input type="text" id="mail" name="mail"></input>
<span id="error_mail" class="error"></span><br/><br/>
<input type="submit"></input><br/>
<input type="reset" id="reset" name="reset"></input>
</form>
</body>
</html>
En este código destacan tres etiquetas "span" sin contenido:
<span id="error_name" class="error"> </span>
<span id="error_age" class="error"> </span>
<span id="error_mail" class="error"> </span>
La razón por la que no tienen contenido es porque se les asignará un texto de forma dinámica a través de JavaScript. Estas etiquetas deben estar ocultas al cargar la pagina, y esto lo conseguiremos mediante css:
.error
{
color:red;
display:none;
}
Aquí utilizamos el class "error" al que pertenecen estas etiquetas para ocultarlas y colorearlas de rojo.
Ahora veamos el código Javascript:
function validar() { /* SE OBTIENEN LOS ELEMENTOS NOMBRE, EDAD Y MAIL */ fname = document.getElementById('name'); age = document.getElementById('age'); mail = document.getElementById('mail'); /* SELECCIONA LAS ETIQUETAS DE ERROR Y LAS OCULTA */ sp_fname = document.getElementById('error_'+fname.id ); sp_fname.setAttribute('style','display: none'); sp_age = document.getElementById('error_'+age.id); sp_age.setAttribute('style','display: none'); sp_mail = document.getElementById('error_'+mail.id); sp_mail.setAttribute('style','display: none'); continuar = true; /*envio activado por defecto*/ /*SE EVALUAN LAS EXPRESIONES*/ /* 1- QUE El CAMPO NOMBRE NO ESTE VACIO*/ if (fname.value.length <= 0) { sp_fname.innerHTML = "Por favor digite un nombre válido"; sp_fname.setAttribute('style','display:inline'); continuar = false; /*se desactiva el envio y se muestra el mensaje de error*/ } /*2- QUE EL CAMPO EDAD NO ESTE VACIO Y CONTENGA SOLO NUMEROS*/ if (age.value.length <= 0 || isNaN(age.value)) { sp_age.innerHTML = "Por favor digite una edad válida"; sp_age.setAttribute('style','display:inline'); continuar = false; /*se desactiva el envio y se muestra el mensaje de error*/ } /*3- SE VALIDA LA EXPRESION REGULAR PARA E-MAIL*/ if (/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/.test(mail.value)){ /*no hacer nada*/ } else{ sp_mail.innerHTML = "Por favor digite un e-mail válido"; sp_mail.setAttribute('style','display:inline'); continuar = false; /*se desactiva el envio y se muestra el mensaje de error*/ } /*CUALQUIERA DE LAS EVALUACIONES ANTERIORES PUEDE ANULAR EL ENVIO*/ return continuar; }
En cada "if" se evalúa uno de los campos, y si la expresión no pasa la evaluación, entonces se escribe el error, se muestra la etiqueta junto al campo correspondiente:
sp_fname.innerHTML = "Por favor digite un nombre válido";
sp_fname.setAttribute('style','display:inline');
Y por último, se marca en false la variable continuar, esto detendrá el envío del formulario:
continuar = false;
Este código es muy sencillo y se pueden validar la cantidad de campos que se quiera y fue creado con la intención de aprender a dominar JavaScript.
Actualmente existen métodos mas sencillos para lograr esta validación basados en jQuiery y derivados.
Descargar archivos de este ejemplo:validacion-de-formularios.rar.
ver este ejeplo online.
Si te ha gustado esta entrada, comenta es gratis!!! o Suscríbete a nuestro blog.
No hay comentarios:
Publicar un comentario