// FUNCIONES DE VALIDACIÓN: // *********************** // esta_vacio - que el campo no está vacío // esnumerico - que el campo sea numérico (ej.: 4.56) // solo_numeros - que sólo contenga números (ej.: 34753768346587345) // solo_letras - que sólo contenga letras (ej.: yuwekwehHUERYI) // alfanumerico - que sea alfanumerico // email - que el formato del campo sea de email // espacios - no permite escribir espacios en el campo // seleccionado - obliga a seleccionar algo en un SELECT que no sea la primera opción. // selecciona_radio - obliga a seleccionar una opción en un RADIO. // caracter_raro - checkea si hay algún caracter dado en el campo text. // cuenta_caracteres - limita el número de caracteres de un TEXTAREA o TEXT. (maximo) // cuenta_caracteres2 - limita el número de caracteres de un TEXTAREA o TEXT. (minimo) // CifValido - chequea el formato del CIF. // NifValido - chequea NIF // CifONifValido - chequea que sea un NIF o un CIF // entre_cuantos - chequea que la longitud del campo esté entre 2 valores (n,m) // posicion_noCero // cuantosONada - chequea que una campo tenga v caracteres o ninguno // chequearfechas ( fecha_fin , fecha_ini ,mensaje) chequea las fechas // CONTADOR Cuenta los caracteres de un campo // CHECKONE - mira si al menos hay un checkbox chequeado //chequearfechaactual(a,b,m) chequea que la fecha sea futura (al menos al día siguiente del corriente). // hay que pasarle la fecha mínima partir de la que se cuenta un día pa que de el toque. //isValidDate(fieldValue) - Comprueba si la cadena pasada por parametro es una fecha en formato correcto dd/mm/aa o dd/mm/aaaa //parseDate(dateString) - Parseo de fechas. Requiere un string previamente validado (no puede ser nulo y debe tener formato (dd/mm/aa) ó (dd/mm/aaaa) function igual(t,s){ if (t.value!=s.value) { errores+="\n - No coinciden los valores escritos para la contraseña"; } } function igual1(t,s){ if (t.value!=s.value) { errores+="\n - No coinciden los valores escritos para el email"; } } function checKurgente(a,b,m) { dia_fin=a.value.substr(0,2); mes_fin=a.value.substr(3,2); anno_fin=a.value.substr(6,4); fecha=anno_fin+"/"+mes_fin+"/"+dia_fin; //alert(fecha) timeA = new Date(fecha); dia_ini=b.value.substr(0,2); mes_ini=b.value.substr(3,2); anno_ini=b.value.substr(6,4); fecha=anno_ini+"/"+mes_ini+"/"+dia_ini; //alert(fecha) timeB = new Date(fecha); dif = timeA - timeB; if (dif > (86400000*15)){ m.checked=false; errores+="\n-Una oportunidad se considera URGENTE si desde la fecha de publicación hasta la fecha de comienzo de la actividad \nexisten menos de 15 días. Al no cumplirse esta condición, no se permite marcar el indicativo de urgente"; } } function checkone(a,b,c,d){ //a esta func se le manda: el formulario(t), posic del primer //checkbox de la coleccion(se cuenta desde 0), el número de checbox que se generan y el nombre del campo lleno =false; for(i=b;i<=b+c;++i){ if(a.elements[i].checked) lleno=true; } if(!lleno){ errores+="\n - Debes seleccionar al menos una " + d; } } function es_hora(t){ var eshora=/^(\d{2}\:\d{2})$/; hora=t.value; if(!eshora.test(t.value)) { errores+="\n-Debes introducir bien la hora (hh:mm)"; } else { h=hora.split(':'); if ( (h[0]>23) || (h[1]>59) ) { errores+="\n-Debes introducir una hora correcta"; } } } function contador(s,u) { numcaract = s.value.length; alert(" El número caracteres de '" + u + "' es " + numcaract + "."); } function chequearfechas(a,b,m) { dia_fin=a.value.substr(0,2); mes_fin=a.value.substr(3,2); anno_fin=a.value.substr(6,4); fecha=anno_fin+"/"+mes_fin+"/"+dia_fin; //alert(fecha) timeA = new Date(fecha); dia_ini=b.value.substr(0,2); mes_ini=b.value.substr(3,2); anno_ini=b.value.substr(6,4); fecha=anno_ini+"/"+mes_ini+"/"+dia_ini; //alert(fecha) timeB = new Date(fecha); dif = timeA - timeB; if (dif<0) errores+="\n-Debes introducir bien las fechas en el campo "+ m +" (rango fechas)-"; } function chequearfechaactual(a,b,m) { dia_fin=a.value.substr(0,2); mes_fin=a.value.substr(3,2); anno_fin=a.value.substr(6,4); fecha=anno_fin+"/"+mes_fin+"/"+dia_fin; //alert(fecha) timeA = new Date(fecha); dia_ini=b.value.substr(0,2); mes_ini=b.value.substr(3,2); anno_ini=b.value.substr(6,4); fecha=anno_ini+"/"+mes_ini+"/"+dia_ini; //alert(fecha) timeB = new Date(fecha); dif = timeA - timeB; //alert(timeA); // alert(timeB); // alert(dif); if (dif<1) errores+="\n- "+ m +" -"; } function cuantosONada(s,u,v) { if(s.value.length != v && s.value.length != 0) errores += "\n - El campo '" + u + "' no tiene una longitud correcta ('" + v + "' caracteres)."; } function entre_cuantos(s,u,n,m) { //n: caract. min; m: caract. max. if(s.value.lengthm) errores += "\n - El campo '" + u + "' no tiene una longitud correcta (entre '" + n + "' y '" + m + "' caracteres.)"; } function cuenta_caracteres(s,u,v) { numcaract = s.value.length; if(numcaract > v) errores += "\n - El número máximo de caracteres para el campo '" + u + "' es " + v + ". Sobran " + (numcaract - v) + "."; } function cuenta_caracteres2(s,u,v) { numcaract = s.value.length; if(numcaract < v) errores += "\n - El número mínimo de caracteres para el campo '" + u + "' es " + v + ". Faltan " + (v - numcaract) + "."; } function esta_vacio(s,u) { if (s.value == ""){ errores += "\n - El campo '" + u + "' es obligatorio."; }else{ todoespacios(s,u); } } /*function esnumTlf(s,u) { tlf=s.value var=tlf.split(' ') ok=true for (i=0;i(),;:$&!\`\'^*|[]{}"; var invalidDomainChars = "\\\/\"<>(),;:$&!\`\'^*@|{}"; var emptyAddr = true; var ErrorAddrChars = ""; var ToVal = "";var CCVal = "";var BccVal = ""; var numAttachments = 0; function isWhitespace(s) { var i,c; // Is s empty? if (isEmpty(s)) return true; // Search through string's characters one by one // until we find a non-whitespace character. // When we do, return false; if we don't, return true. for (i = 0; i < s.length; i++) { // Check that current character isn't whitespace. c = s.charAt(i); if (whitespace.indexOf(c) != -1 ) return true; } // All characters are whitespace. return false; } function isEmpty(s) { if (s == null || s.length == 0) return true; return false; } function is_simple_address(addr) { var good_address = true; var at_sign = 0; var space = 0; space = addr.indexOf(" "); at_sign = addr.indexOf("@"); if (space>=0 || at_sign<=0 || at_sign==(addr.length-1) || !isEmail(addr)) { good_address = false; } return good_address; } function isEmail(s) { if (isEmpty(s)) if (isEmail.arguments.length == 1) return defaultEmptyOK; else return (isEmail.arguments[1] == true); // is s whitespace? if (isWhitespace(s)) return false; // there must be >= 1 character before @, so we // start looking at character position 1 // (i.e. second character) var i = 1; var sLength = s.length; // look for @ while ((i < sLength) && (s.charAt(i) != "@")) { i++; } if ((i >= sLength) || (s.charAt(i) != "@")) return false; else i += 2; // look for . while ((i < sLength) && (s.charAt(i) != ".")) { i++; } // there must be at least one character after the . if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false; else return true; } function email(s,u) { var x = s.value; var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if (!filter.test(x)&& s.value != "") errores += "\n - Introduce una dirección correcta en el campo '" + u + "'."; } function CifONifValido(s,u) { if(!NifValido(s,u) && !CifValido(s,u)) errores += "\n - El formato del '" + u + "' no es correcto."; } //************************************ // CONTROL DEL NIF //************************************ function NifValido(s,u){ var correcto = false; var lon = ((s.value.length) - 1); var x = s.value.substring(0,lon); var y = (x % 23); var z = s.value.substring(lon,(lon + 1)); //alert("cadena:" + s.value+"lon:" + lon+"y modulo:" + y+"x numeros:" + x+"z letra:" + z); if (y==0 && (z=="t" || z=="T")){ correcto = true; } if (y==1 && (z=="r" || z=="R")){ correcto = true; } if (y==2 && (z=="w" || z=="W")){ correcto = true; } if (y==3 && (z=="a" || z=="A")){ correcto = true; } if (y==4 && (z=="g" || z=="G")){ correcto = true; } if (y==5 && (z=="m" || z=="M")){ correcto = true; } if (y==6 && (z=="y" || z=="Y")){ correcto = true; } if (y==7 && (z=="f" || z=="F")){ correcto = true; } if (y==8 && (z=="p" || z=="P")){ correcto = true; } if (y==9 && (z=="d" || z=="D")){ correcto = true; } if (y==10 && (z=="x" || z=="X")){ correcto = true; } if (y==11 && (z=="b" || z=="B")){ correcto = true; } if (y==12 && (z=="n" || z=="N")){ correcto = true; } if (y==13 && (z=="j" || z=="J")){ correcto = true; } if (y==14 && (z=="z" || z=="Z")){ correcto = true; } if (y==15 && (z=="s" || z=="S")){ correcto = true; } if (y==16 && (z=="q" || z=="Q")){ correcto = true; } if (y==17 && (z=="v" || z=="V")){ correcto = true; } if (y==18 && (z=="h" || z=="H")){ correcto = true; } if (y==19 && (z=="l" || z=="L")){ correcto = true; } if (y==20 && (z=="c" || z=="C")){ correcto = true; } if (y==21 && (z=="k" || z=="K")){ correcto = true; } if (y==22 && (z=="e" || z=="E")){ correcto = true; } if (y==23 && (z=="t" || z=="T")){ correcto = true; } if(!correcto) { //errores += "\n - El formato del '" + u + "' no es correcto."; return false; } else { return true; } } //************************************ // CONTROL DEL CIF //************************************ function CifValido(s,u){ var c1,c4; var error=true; var mal=false; //recogemos primer y ULTIMO caracter c1=s.value.substring(0,1); c1=c1.toUpperCase(); if (s.value.length != 9) mal=true; else c4=s.value.substring(8,9); if (s.value.length < 10) // comprobar que es un numero if (!esEntero(s.value.substring(1,s.value.length-1))) mal=true; else { if ((c1 >= "A" && c1 <= "H") && (c4 >= 0 && c4 <= 9)) //espanolas { error=control1(s); } else if ((c1 >= "S") && (c4 >= "A" && c4 <= "J")) error=control2(s); else if ((c1 >= "P" && c1 <= "Q") && (c4 >= "A" && c4 <= "J")) error=control2(s); else if ((c1 >= "A" && c1 <= "H") && (c4 >= "A" && c4 <= "J")) error=control2(s); else if ((c1 >= "N") && (c4 >= "A" && c4 <= "J")) error=control2(s); else mal=true; } if (error) mal=true; if (mal) { //errores += "\n - El campo '" + u + "' no es correcto."; return false; } else { return true; } } function control1(num_cif){ var numeros; var R1; numeros=num_cif.value.substring(1,8); R1= (eval(numeros.substring(1,2))+eval(numeros.substring(3,4))+eval(numeros.substring(5,6))); R21=(numeros.substring(0,1)*2); if (R21 >= 10) R21= (1 + (R21 %10)); R22=(numeros.substring(2,3)*2); if (R22 >= 10) R22=(1+ (R22 %10)); R23=(numeros.substring(4,5)*2); if (R23 >= 10) R23=(1+(R23 %10)); R24=(numeros.substring(6,7)*2); if (R24 >=10) R24 = (1 + (R24%10)); R2 = (R21 +R22+R23 +R24); R = (R1 + R2); Resto = (R %10); if (Resto != 0 ) Resto= 10 -Resto; if (Resto == num_cif.value.substring(8,9)) return false; else return true; } function control2(num_cif){ var numeros; var R1; numeros=num_cif.value.substring(1,8); R1= (eval(numeros.substring(1,2))+eval(numeros.substring(3,4))+eval(numeros.substring(5,6))); R21=(numeros.substring(0,1)*2); if (R21 >= 10) R21= (1 + (R21 %10)); R22=(numeros.substring(2,3)*2); if (R22 >= 10) R22=(1+ (R22 %10)); R23=(numeros.substring(4,5)*2); if (R23 >= 10) R23=(1+(R23 %10)); R24=(numeros.substring(6,7)*2); if (R24 >=10) R24 = (1 + (R24%10)); R2 = (R21 +R22+R23 +R24); R = (R1 + R2); Resto = (R %10); if (Resto != 0 ) Resto= 10 -Resto; switch (Resto){ case 1:control="A"; break; case 2:control="B"; break; case 3:control="C"; break; case 4:control="D"; break; case 5:control="E"; break; case 6:control="F"; break; case 7:control="G"; break; case 8:control="H"; break; case 9:control="I"; break; case 0:control="J"; break; default: break; } if (control == num_cif.value.substring(8,9)) return false; else return true; } function esEntero(entero) { var i; for (i = 0; i < entero.length; i++) { var c = entero.charAt(i); if (!isDigit(c)){ return false; } } return true; } function isDigit(c) { return ( ( c >= "0" ) && ( c <= "9" ) ); } function chequea() { if (errores != "") //alert("Por favor, corrije los siguientes fallos:" + errores); return false; else //alert("Todo OK"); return true; } function posicion_noCero(t) { if (t.value <=0) errores += "\n - El número de posición debe ser mayor que 0"; } function isValidDate(fieldValue) { var retorno = false; // Primero se valida la sintaxis con una expresión regular. // \d{1,2}\/ Dos dígitos seguidos de '/'. // (1|0)?\d\/ 1 ó 0, seguido de un dígito y '/'. // (\d\d){1,2} Dos o cuatro dígitos. if(/^\d{1,2}\/(1|0)?\d\/(\d\d){1,2}$/.test(fieldValue)) { // Se verifica que la fecha existe creando un Date con el día-mes-año // especificados. Si el Date no modifica estos valores tras crearlos // (por ejemplo, si un para mes de 30 días le damos el dia 31, el Date // salta solo al dia 1 del mes siguiente), la fecha es correcta. var items = fieldValue.split('/'); var dia = parseInt(items[0], 10); var mes = items[1]; if(mes.indexOf('0') == 0) mes = mes.replace('0',''); mes = parseInt(mes, 10)-1;// El objeto date recibe el mes con un indice que empieza en 0... var an = items[2]; an = parseInt(an.length == 2 ? '20' + an : an, 10); var fecha = parseDate(fieldValue); retorno = ( dia == fecha.getDate() && mes == fecha.getMonth() && an == fecha.getFullYear() ); } return retorno; } /** * Parseo de fechas. Requiere un string previamente validado (no puede ser nulo y debe tener formato (dd/mm/aa) ó (dd/mm/aaaa) */ function parseDate(dateString) { var items = dateString.split('/'); var dia = parseInt(items[0], 10); var mes = items[1]; if(mes.indexOf('0') == 0) mes = mes.replace('0',''); mes = parseInt(mes, 10)-1;// El objeto date recibe el mes con un indice que empieza en 0... var an = items[2]; an = parseInt(an.length == 2 ? '20' + an : an, 10); var date = new Date(); date.setFullYear(an); // Es importante establecer primero el año o fallan los bisiestos. date.setMonth(mes,dia); // Tambien es importante pasar día y mes a la vez return date; }