Cada vez es más corriente encontrarnos páginas donde los formularios se hacen en Flash. Es una buena costumbre validar los datos introducidos por los usuarios antes de procesar el envío. De este modo, evitamos posibles errores.
ActionScript no ofrece ninguna función predefinida que nos compruebe la sintaxis de las direcciones de correo electrónico introducidas por los usuarios. Esto es lo que pretendemos solucionar en este tutorial.
Vamos a crear una función global llamada isMail que va a llevar a cabo a tarea de comprobar la dirección de email. En caso de ser válida la dirección, obtendremos un valor true. Si por el contrario se detecta alguna anomalía en la sintaxis, se devuelve un valor false. Es decir:
trace(isMail("pepito@hotmail.com"))); // devuelve true, la dirección es correcta
trace(isMail("pepito@hotmail@com"))); // devuelve false, la dirección no es correcta (tiene dos @)
COMO HACERLO.
La función se basa en una serie de comprobaciones sucesivas. Si supera todos los "obstáculos" y llega hasta el final develve un valor true, si queda por el camino devuelve false. Le hemos asignado el ámbito global a la función para no tener que preocuparnos de rutas al invocarla.
La función queda:
_global.isMail = function(arg) {
// compruebo que no este vacía la cadena exaustivamente
if (arg == "" || arg == null || arg == "null" || arg == undefined || arg == "undefined") {
return false;
trace("cadena vacía");
// compruebo si hay una arroba y solo una
} else if (arg.indexOf("@") == -1 || arg.indexOf("@") != arg.lastIndexOf("@")) {
return false;
trace("núm de @ erróneo");
} else {
// dividimos la direccion en usuario y dominio
var partes = arg.split("@");
var usuario = partes[0];
var dominio = partes[1];
// compruebo usuario
if (usuario.length<1) {
return false;
trace("usuario vacío");
} else {
// compruebo si hay algún carácter raro
var caracteresProhibidos = new Array("º", "ª", "!", "#", "$", "%", "&", "¬", "/", "(", ")", "=", "?", "¿", "¡", ",", ";", ":", "[", "]", "{", "}", "á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú");
var numCaracteresProhibidos = 0;
for (var k = 0; caracteresProhibidos[k]; k++) {
if (usuario.indexOf(caracteresProhibidos[k]) != -1) {
numCaracteresProhibidos++;
}
}
if (numCaracteresProhibidos>0) {
trace("caracteres prohibidos encontrados");
return false;
// compruebo dominio
} else if (dominio.indexOf(".") == -1 || dominio.length<1) {
return false;
trace("núm de puntos erróneo en dominio");
} else {
var partes_dominio = dominio.split(".");
var extension = partes_dominio[partes_dominio.length-1];
// compruebo que el dominio tenga como mínimo 3 chr antes del punto
if (dominio.length-extension.length<4) {
trace("dominio menor de 3 chr");
return false;
} else if (extension.length<2 || extension.length>4) {
trace("longitud de extension errónea");
return false;
} else {
trace("mail correcto");
return true;
}
}
}
}
};
Para comprender mejor el código, recomendamos la descarga del fla que encontrareís más abajo.
Como se ve, la función hace una comprobación bastante exaustiva, aunque todavía sería ampliable. Por otro lado, la validación se hace únicamente en base a criterios de sintaxis, por lo tanto, si escribimos mal una dirección, pero sintácticamente es correcta, la dará por buena. Es decir, si mi dirección es pepito@hotmail.com y escribo pepito@jotmail.com no detectaremos el error.
Podéis descargaros este mismo ejemplo y ver cómo funciona: isMail.fla