Foros del Web » Programando para Internet » Javascript »

onsubmit="¿cómo llamo aquí a 2 funciones?"

Estas en el tema de onsubmit="¿cómo llamo aquí a 2 funciones?" en el foro de Javascript en Foros del Web. He creado 2 funciones con javascript, una es valida(), q comprueba q ciertos campos no queden vacíos: function valida() { var campo1 = document.getElementById("usuari"); var ...
  #1 (permalink)  
Antiguo 30/05/2005, 03:44
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Pregunta onsubmit="¿cómo llamo aquí a 2 funciones?"

He creado 2 funciones con javascript, una es valida(), q comprueba q ciertos campos no queden vacíos:

function valida() {
var campo1 = document.getElementById("usuari");
var campo2 = document.getElementById("descrip");
...
if (campo1.value=='') {
alert('Debe rellenar los campos marcados con *');
campo1.focus();
return false;
}
else if (campo2.value=='') {
alert('Debe rellenar los campos marcados con *');
campo2.focus();
return false;
}
...
return true;
}


Y una segunda función q comprueba la validez de la dirección de correo:

function emailCorrecto () {
var campo1 = document.getElementById("email");
var email = campo1.value;
var filtro = /^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
if (email.length == 0 ) return true;
if (filtro.test(email))
return true;
else {
alert("La dirección de correo iontroducida no es correcta");
campo1.focus();
return false;
}
}
Ahora quiero llamar a ambas funciones cuando se pulse el botón de enviar del formulario, pero no sé cómo llamar a las dos.

Había creado una tercera función q llamara a las 2, y así sólo tengo q llamar a la tercera en el onsubmit del formulario, pero tp sale bien:

function continuar() {
if (valida()==true & emailCorrecto()==true)
return true;
else
return false;
}


¿Qué debo poner en onsubmit para q me llame a las dos funciones, y si alguna de ellas devuelve 'false', no continúe?

El siguiente código no funciona:

<form method="post" action="http://localhost/Sinsertada.php" name="introinci" onsubmit="return continuar()">

<form method="post" action="http://localhost/Sinsertada.php" name="introinci" onsubmit="if (valida()) return emailCorrecto()">

<form method="post" action="http://localhost/Sinsertada.php" name="introinci" onsubmit="if (emailCorrecto()) return valida()">
  #2 (permalink)  
Antiguo 30/05/2005, 04:06
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas,

has probado así?

Código:
function valida() {
var campo1 = document.getElementById("usuari");
var campo2 = document.getElementById("descrip");
...
if (campo1.value=='') {
alert('Debe rellenar los campos marcados con *');
campo1.focus();
return false;
}
else if (campo2.value=='') {
alert('Debe rellenar los campos marcados con *');
campo2.focus();
return false;
}
return emailCorrecto ()  
return true;
}
  #3 (permalink)  
Antiguo 30/05/2005, 04:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Ya lo he solucionado. He añadido 2 cosas, una de ellas el 'return emailCorrecto()'. Creo q alguna no debería ser necesaria, pero si lo cambio no sale, así q prefeiro dejar de tocarlo, q ahora q sale bien...
Lo dejo aquí por si a alguien le sirve de ayuda:

<script type="text/javascript">
function valida() {
var campo1 = document.getElementById("usuari");
var campo2 = document.getElementById("descrip");
...
if (campo1.value=='') {
alert('Debe rellenar los campos marcados con *');
campo1.focus();
return false;
}
else if (campo2.value=='') {
alert('Debe rellenar los campos marcados con *');
campo2.focus();
return false;
}
...
return emailCorrecto(); <-----------------------
return true;
}

function emailCorrecto () {
var campo1 = document.getElementById("email");
var email = campo1.value;
var filtro = /^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
if (email.length == 0 ) return true;
if (filtro.test(email))
return true;
else {
alert("La dirección de correo iontroducida no es correcta");
campo1.focus();
return false;
}
}
</script>

...
<form method="post" action="http://localhost/Sinsertada.php" name="introinci" onsubmit="if (emailCorrecto() && valida()) return true; else return false;">

Y lo q va entrecomillado en 'onsubmit' tb lo he cambiado.

Gracias por la ayuda!!! :D
  #4 (permalink)  
Antiguo 30/05/2005, 05:04
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
He vuelto a comprobarlo... Creo q el 'return emailCorrecto()' en la función 'valida()' no es necesario. A mí me funciona sin eso.
  #5 (permalink)  
Antiguo 30/05/2005, 05:09
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
... en realidad lo que sobra es esto

<form method="post" action="http://localhost/Sinsertada.php" name="introinci" onsubmit="if (emailCorrecto() && valida()) return true; else return false;">

Bastaría con le pidieras un return valida()

<form method="post" action="http://localhost/Sinsertada.php" name="introinci" onsubmit="return valida()">

Todo lo demás no es necesario
  #6 (permalink)  
Antiguo 30/05/2005, 05:23
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Esa era mi idea inicial, pero me dice q 'se necesita un objeto, desea depurar...?'. De la forma q lo he dejado, me lo ejecuta sin problemas.
Encuentro lógico q se haga de la manera q tú dices, pero de esa forma me muestra un error al comprobar el email, y de hecho, no lo comprueba, por eso he buscado la otra forma de hacerlo.
Saludos :D
  #7 (permalink)  
Antiguo 30/05/2005, 05:26
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
mmm si tuviera tiempo me ponía a hacer pruebas ... (pero ahora mismo no puedo)

Pues nada, si de la otra forma no te tira error y te funciona, adelante

Un saludo
  #8 (permalink)  
Antiguo 30/05/2005, 06:01
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Supongo q será problema de otros campos, q tb realizo comprobaciones y creo q no está hecho demasiado bien... Gracias.
Saludos, AnDrEa :D
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:28.