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 ?