Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/03/2013, 10:29
ylodis
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Validar Formulario Autorecursivo (en la misma página) de correo

Hola,

He dudado si abrir este post en PHP, pero dado que lo primero que ejecuto es JavaScript y que es donde creo que tengo el problema, lo incluyo aquí.

Quiero hacer un formulario que se ejecuta en la misma página, pero que sólo haga el envio si pasa las validaciones de campos en JavaScript.

tengo :
Código HTML:
 <form name="recomendar" onsubmit="return ValidaCampos(this)" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
y el fichero externo JS :
Código:
// Validacion propiamente dicha
function ValidaCampos(form)
{ 
		
    // Recuperar variables pasadas en URL
	var Url = location.href;
	var trab = Url.charAt(Url.length-1);
	document.recomendar.trab.value = trab;// lo muevo a campo oculto de formulario para que lo pase
	
    if(document.recomendar.nombretuyo.value.length < 2)
		{	
			document.recomendar.nombretuyo.focus();
			alert("Escriba su nombre, por favor");	
			return false;
		}	
		else if(document.recomendar.nombresuyo.value.length < 2){	
				document.recomendar.nombresuyo.focus();
				alert("Escriba el nombre de su amigo, por favor");	
				return false;
        	}
		else if(!isMail(document.recomendar.mailusuario.value))
				{ 
					document.recomendar.mailusuario.focus();
					alert('Email incorrecto.');  	
					return false;
				}
		else if(!isMail(document.recomendar.mailamigo.value))
				{ 
					document.recomendar.mailamigo.focus();
					alert('Email incorrecto.');  	
					return false;
				}
				
				
			else{ return true; }
}

/* dice si cadena es un email ([email protected][.alfanum]) o no, don- */
/* de alfanum son caracteres alfanumericos u otros                           */
function isMail(Cadena) {  
  
    Punto = Cadena.substring(Cadena.lastIndexOf('.') + 1, Cadena.length)            // Cadena del .com  
    Dominio = Cadena.substring(Cadena.lastIndexOf('@') + 1, Cadena.lastIndexOf('.'))    // Dominio @lala.com  
    Usuario = Cadena.substring(0, Cadena.lastIndexOf('@'))                  // Cadena lalala@  
    Reserv = "@/º\"\'+*{}\\<>?¿[]áéíóú#·¡!^*;,:"                        // Letras Reservadas  
      
    // Añadida para poder emitir un alert en funcion de si email valido o no  
    valido = true  
      
    // verifica que el Usuario no tenga un caracter especial  
    for (var Cont=0; Cont<Usuario.length; Cont++) {  
        X = Usuario.substring(Cont,Cont+1)  
        if (Reserv.indexOf(X)!=-1)  
                    valido = false  
    }  
  
    // verifica qie el Punto no tenga un caracter especial  
    for (var Cont=0; Cont<Punto.length; Cont++) {  
        X=Punto.substring(Cont,Cont+1)  
        if (Reserv.indexOf(X)!=-1)  
            valido = false  
    }  
                          
    // verifica qie el Dominio no tenga un caracter especial  
    for (var Cont=0; Cont<Dominio.length; Cont++) {  
        X=Dominio.substring(Cont,Cont+1)  
        if (Reserv.indexOf(X)!=-1)  
            valido = false  
        }  
    // Verifica la sintaxis básica.....  
    if (Punto.length<2 || Dominio <1 || Cadena.lastIndexOf('.')<0 || Cadena.lastIndexOf('@')<0 || Usuario<1) {  
        valido = false  
    }  
	
    if (valido) {  
        return true;   
    } else {  

        return false; 
    }  
}
pero cuando lo sigo con Firebug no llega a entrar en ValidaCampos( y continua con el envio.

¿ Qué hago mal ?
__________________
El Tarot no es un juego.