/* Función prototipo para eliminar los espacios por delante y por detrás de una cadena de texto */ String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,''); } /* Funciones de validación de datos */ function validarCampos(objeto) { // Recorre los campos del formulario y los valida uno a uno campos = objeto.getElementsByTagName("input"); var valido = true; for(cont=0;cont0) { if (parametros.search('r')==-1) { if(objeto.value.trim()=="") { parametros = ""; } } opcion = parametros.substr(0,1); parametros = parametros.substr(1); switch(opcion) { case 'r': // Campo requerido if(objeto.value.trim()=="") { objeto.value = ""; errores.push("Campo vacio. Ha de introducir la información correspondiente"); valido = false; } break; case 'd': // Tipo DNI if (valido) { if (!validarDNI(objeto.value)) { errores.push("Documento incorrecto. Compruebe la numeración y la letra final"); valido = false; } } break; case '@': // Tipo email if(valido) { if(!validarCorreo(objeto.value)) { errores.push("Correo electrónico mal formado"); valido = false; } } break; case 'n': // Tipo entero if (valido) { if (!validarEntero(objeto.value)) { errores.push("Sólo puede introducir dígitos del 0 al 9"); valido = false; } } break; case ',': // Tipo flotante if (valido) { if (!validarFlotante(objeto.value)) { errores.push("El número ha de ser un entero o un decimal"); valido = false; } } break; case 'l': // Comprobar el tamaño mínimo if (valido) { if(objeto.size!=objeto.value.length) { errores.push("Ha de introducir "+objeto.size+" carácteres/dígitos"); valido = false; } } break; case 'f': // Tipo fecha if (valido) { if (!validarFecha(objeto.value)) { errores.push("Fecha incorrecta. Introduzca dd/mm/aaaa"); valido = false; } } break; case 'a': //Tipo año if (valido) { if (!validarAnyo(objeto.value)) { errores.push("El año ha de constar de 4 cifras y pertencer al siglo XX o XXI"); valido = false; } } } } } if (!valido) { objeto.title = errores; objeto.style.border = "solid 1px #FF0000"; objeto.style.background = "#FFA0A0"; }else{ objeto.title = ""; objeto.style.border = "solid 1px black"; objeto.style.background = "#F0F0F0"; } if (devolverErrores) { return errores; }else{ return valido; } } function validarDNI(valor) { // Se comprueba la estructura: digitos+letra (nif) o x+digitos+letra (nie) patron = new RegExp("^((\\d{8}[a-zA-Z])|(\\d{7}[a-zA-Z])|([xXtTyYzZ]\\d{7}[a-zA-Z]))$"); resultado = patron.test(valor); if (resultado) { // Se valida la letra letra = "TRWAGMYFPDXBNJZSQVHLCKE"; patron = new RegExp("\\d{7,8}"); suma = 0; if(valor.charAt(0).toUpperCase()=="Y") { suma = 10000000; } if(valor.charAt(0).toUpperCase()=="Z") { suma = 20000000; } numeros = valor.match(patron)*1+suma; if (valor.charAt(valor.length-1).toUpperCase()!=letra.charAt(numeros % 23)) { resultado = false; } } return resultado; } function validarCorreo(valor) { // Se comprueba la estructura básica: letras + @ + letras + . + letras patron = new RegExp("^[a-zA-Z0-9_\+-]+(\.[a-zA-Z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$"); resultado = patron.test(valor); return resultado; } function validarEntero(valor) { // Se comprueba que sólo sean dígitos enteros patron = new RegExp("^[0-9]+$"); resultado = patron.test(valor); return resultado; } function validarFlotante(valor) { // Se comprueba que sólo sean dígitos flotantes patron = new RegExp("^([0-9]+\,[0-9]+|[0-9]+)$"); resultado = patron.test(valor); return resultado; } function validarFecha(valor) { // Se comprueba la estructura de digitos: 00/00/0000 o 00-00-0000 patron = new RegExp("^([0-9]{1,2}\/[0-9]{1,2}\/((19)|(20))[0-9]{2})$"); resultado = patron.test(valor); // Falta comprobar la coherencia de los dígitos return resultado; } function validarAnyo(valor) { patron = new RegExp("^[0-9]{4}$"); resultado = patron.test(valor); if (resultado) { if ((valor<1900)||(valor>2100)) { resultado = false; } } return resultado; }