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">
Código:
pero cuando lo sigo con Firebug no llega a entrar en ValidaCampos( y continua con el envio.// 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; } }
¿ Qué hago mal ?