Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Validar Formulario Autorecursivo (en la misma página) de correo

Estas en el tema de Validar Formulario Autorecursivo (en la misma página) de correo en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/03/2013, 10:29
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 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.
  #2 (permalink)  
Antiguo 26/03/2013, 10:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validar Formulario Autorecursivo (en la misma página) de correo

buenas...
muestra cómo estás realizando el submit. ¿lo haces con un botón tipo submit o con un botón que interpreta un script que a su vez invoca el método submit? fíjate que aunque el efecto final es el mismo, el proceso interno por el que pasa es distinto. el método submit de los formularios no activa el evento onsubmit.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 26/03/2013, 11:02
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Validar Formulario Autorecursivo (en la misma página) de correo

Hago :

Código HTML:
 <input type="submit" value="Enviar" name="submit"/> 
__________________
El Tarot no es un juego.
  #4 (permalink)  
Antiguo 26/03/2013, 11:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validar Formulario Autorecursivo (en la misma página) de correo

no se que pueda estar fallando, ya intente el código y a mi me funciona. verifica con la consola si se genera alguna excepción (error). probablemente necesitarás preservar el log para cuando se actualice (al enviar el formulario) no se pierda el reporte, si alguno.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 27/03/2013, 12:00
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Validar Formulario Autorecursivo (en la misma página) de correo

Ok,

Tras revisar errores tanto en la consola de Firebug como en la de las herramientas de desarrolladores de Chrome (algo que siempre debería hacerse cuando pasan cosas raras) he conseguido que funcione. Gracias por la respuestaa, a veces con poca ayuda vemos lo que nos tenía atascados por meses.

Gracias nuevamente.
__________________
El Tarot no es un juego.

Etiquetas: campos, correo, formulario, funcion, js, página, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:16.