Window.onDomReady(function(){Validacion()}); var Validacion=function(){ var validaciones={ obligatorio: " es obligatorio", hora: " debe tener el formato hh:mm, por ejemplo: 11:30", nif: " no es un NIF o NIE válido", nie: " no es un NIE válido", cif: " no es un CIF válido" , nif_cif: " no es un NIF, CIF o NIE válido", email : " no es un email válido", numero: " debe ser un número entero, sin puntos ni comas", decimal: " debe ser un número con hasta dos decimales, utlizando el punto como separador", fecha : " debe tener el formato dd/mm/aaaa, por ejemplo 18/10/2007", color: "debe ser un color en hexadecimal, por ejemplo CC0000" } function nombreCampo(em){ var nombre=em.title; if(!nombre && $(em.parentNode).getTag()=='label'){ nombre=em.parentNode.firstChild.nodeValue; } if(!nombre && em.getPrevious() && ($(em.getPrevious()).getTag()=='label' || $(em.getPrevious()).getTag()=='span')){ nombre=$(em.getPrevious()).firstChild.nodeValue; } if(!nombre) nombre=em.name; if(!nombre) nombre=em.id; nombre=nombre.replace(":",""); return nombre; } $$('form').each(function(el){ el.validar=function(event){ $$('.texto_por_defecto').each(function(em){ if(em.value==em.title) em.value=''; }); var mensaje=""; for (valor in validaciones){ $$('.'+valor).each(function(em){ if((em.getTag()=="input") || (em.getTag()=="textarea") || (em.getTag()=="select")){ if(esAncestro(el,em)){ if(em.type=="file"){ var valor_campo=em.value; }else{ var valor_campo=em.getValue(); } if(!this[valor+"Validar"](valor_campo)){ mensaje+="- El campo " + nombreCampo(em) + " "+validaciones[valor]+"
"; em.addClass("campo_incorrecto"); }else{ em.removeClass("campo_incorrecto"); } } } }); } if(mensaje){ alerta('Por favor, corrija los siguientes errores:
'+mensaje); try{ cancelarRespuesta(event); }catch(ex){} return false; } return true; } if(el.hasClass('aj3ax')){ el.addEvent('submit',function(event){ cancelarRespuesta(event); if(this.validar(event)){ this.send({onComplete: function(res){ alerta(res); }}); } }); }else{ el.addEvent('submit',el.validar); } }); } function nifValidar(nif){ if(nif=="") return true; cadena="TRWAGMYFPDXBNJZSQVHLCKE"; numeros="0123456789"; if (nif.length!=9){ return false; } for (i=0;i<8;i++) { numero = nif.charAt(i); if ( numeros.lastIndexOf(numero) == -1) return false; } letra=nif.charAt(8).toUpperCase(); if ( cadena.lastIndexOf(letra) == -1) { return false; } letra_calculada = cadena.charAt((nif.substr(0,8) % 23)); if( letra_calculada != letra){ //return false; return nieValidar(nif); //compruebo si es un nie } return true; } function cifValidar(cif){ numeros="0123456789"; cadena="ABCDEFGHPQSKLMX"; cif=cif.toUpperCase(); if (cif.length!=9) return false; for (i=1;i<8;i++) { //comprueba si cif(i) no es un numero numero = cif.charAt(i); if ( numeros.lastIndexOf(numero) == -1 ) return false; } letra1=cif.charAt(0); letra9=cif.charAt(8); numero=cif.substr(1,8); if (letra1=="X") return false; if (cadena.indexOf(letra1) == -1) return false; control=0; for (i=0;i<7;i+=2){ aux=parseInt(numero.charAt(i))*2; control+=aux%10+(aux-aux%10)/10; } control=10-(control+parseInt(numero.charAt(1))+parseInt(numero.charAt(3))+parseInt(numero.charAt(5)))%10; if (control==10) control=0; if (( control==letra9 ) || ( letra9==String.fromCharCode(control+64) ) ) return true; else return false; } function nieValidar(nie){ if (nie.length!=9) return false; nie=nie.toUpperCase(); letra1=nie.charAt(0); letra9=nie.charAt(8); numero=nie.substr(1,8); if (letra1=="X"){ nif = "0"+""+numero; return nifValidar(nif); }else return false; } function nif_cifValidar(numero){ return (nifValidar(numero) || cifValidar(numero)); } function horaValidar(hora){ if ( hora == "" ) return true; var exp=new RegExp("(^([0-9]{2}):([0-9]{2})$)"); partes=hora.split(':'); if ( exp.test(hora) == false || partes[0]<0 || partes[0]>23 || partes[1]>59 || partes[1]<0 ){ return false; }else{ return true; } } function emailValidar(email){ if (email!='' && (email.indexOf("@")==-1 || email.indexOf(".")==-1 ) ){ return false; } return true; } function obligatorioValidar(valor){ if(valor==""){ return false; } return true; } function numeroValidar(valor){ if(Math.ceil(valor).toString()==valor.toString()) return true; return false; } function decimalValidar(valor){ partes=valor.split('.'); if(partes.length>2) return false; if(partes[1] && partes[1].length>2) return false; if(Number(valor)==valor) return true; return false; } function fechaValidar(fecha){ if ( fecha == "" ){ return true; } var exp=new RegExp("(^([0-9]{2})/([0-9]{2})/([0-9]{4})$)"); partes=fecha.split('/'); partes[1]=parseInt(partes[1],10); switch (partes[1]) { case 1 : limite_dias= 31; break; case 3 : limite_dias= 31; break; case 5 : limite_dias= 31; break; case 7 : limite_dias= 31; break; case 8 : limite_dias= 31; break; case 10 : limite_dias= 31; break; case 12 : limite_dias= 31; break; case 4 : limite_dias= 30; break; case 6 : limite_dias= 30; break; case 9 : limite_dias= 30; break; case 11 : limite_dias= 30; break; case 2: if (partes[2]%400==0) limite_dias=29 else if (partes[2]%100==0) limite_dias=28 else if (partes[2]%4==0) limite_dias=29 else limite_dias=28; break; default : limite_dias=0; } if (exp.test(fecha) == false || partes[0]>limite_dias || partes[0]<1 || partes[1]<1 || partes[1]>12){ return false; } return true; } function colorValidar(color){ if ( color == "" ) return true; var exp=new RegExp("^[0-9a-fA-F]{6}$"); return exp.test(color); }