JavaScript - como integro 2 funciones en un solo onsubmit

   
Vista:

como integro 2 funciones en un solo onsubmit

Publicado por Gabriel ecmald778@hotmail.com (8 intervenciones) el 20/09/2012 00:20:39
Saludos, no se si me hago entender, aun soy novato en esto pero tengo una funcion que valida campos de datos del usuario de un formulario, se le da el submit si esta mal sale el correspondiente mensaje de error sino todo ok y se graban esos datos en mi b/d, pero quiero validar las extensiones de las fotos que suban los usuarios igual con un onsubmit en ese mismo programa antes de que se grabe en la b/d, he tratado de juntar las 2 funciones y no me funciona la de las fotos.

codigo de validacion de datos del usuario :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function validarForm(formulario) {
 
    if(formulario.mail.value.length==0) { //¿Tiene 0 caracteres?
    formulario.mail.focus();    // Damos el foco al control
    alert('No puedes dejar campos en blanco'); //Mostramos el mensaje
    return false; //devolvemos el foco
  }
 
  if(formulario.contrasena.value.length==0) { //¿Tiene 0 caracteres?
    formulario.contrasena.focus();    // Damos el foco al control
    alert('No puedes dejar campos en blanco'); //Mostramos el mensaje
    return false; //devolvemos el foco
  }
 
  if(formulario.repcontrasena.value.length==0) { //¿Tiene 0 caracteres?
    formulario.repcontrasena.focus();    // Damos el foco al control
    alert('No puedes dejar campos en blanco'); //Mostramos el mensaje
    return false; //devolvemos el foco
  }
 
  if(formulario.contrasena.value!=formulario.repcontrasena.value) {
    formulario.contrasena.focus();            //comprueba que sean iguales
	alert('Las contraseñas no coinciden');
    return false;
  }
 
 
 
if ((formulario.mail.value.indexOf ('@', 0) == -1)||(formulario.mail.value.length < 5)) {
	 formulario.mail.focus();
    alert("Escriba una dirección de correo válida en el campo \"Dirección de correo\".");
    return (false);
  }
 
 if ((formulario.mail.value.indexOf ('.', 0) == -1)) {
	 formulario.mail.focus();
    alert("Escriba una dirección de correo válida en el campo \"Dirección de correo\".");
    return (false);
  }
 
 
  return true; //Si ha llegado hasta aquí, es que todo es correcto
 
}


y el codigo de validacion de las fotos:

1
2
3
4
5
6
7
8
9
10
function validar(){
        var OK = true;
        var frm = document.forms["frm"];
        var f = frm.elements["archivo"];
        if( !f.value.match(/.(jpg)|(gif)|(png)|(jpeg)$/) ){
            document.getElementById("msg").innerHTML = "Extension debe ser jpg, jpeg, gif o png";
            OK = false;
        }
        return OK;
    }


y los envio a la pagina que los procesa asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<form method="post" name= "frm" action="insertar.php"  enctype="multipart/form-data"   onsubmit="return validarForm(this); validar(); ">
 
E-mail
<br />
 
 
<INPUT TYPE= "TEXT" NAME="mail" />
 
 
<br />
 
 
Nombre de usuario
<br />
 
<INPUT TYPE= "TEXT" NAME="usuario" />
 
<br />
 
Contraseña
<br />
 
<INPUT TYPE= "TEXT" NAME="contrasena" />
 
<br />
 
 
Repita Contraseña
<br />
 
<INPUT TYPE= "TEXT" NAME="repcontrasena" />
 
<br />
<br />
 
<SPAN STYLE="position:absolute; top:1220px; left:-600px;" >
<input type="file" name="foto1" id="foto1" >
Foto Perfil
</SPAN>
 
<SPAN STYLE="position:absolute; top:1395px; left:-600px;" >
<input type="submit"   value = "REGISTRAR PERFIL" >
 
</form>
 
</SPAN>



como ven la primera validacion me funciona, pero no la segunda y lo que quisiera es que el usuario tambien recibiera un mensaje de error si la extension de la foto no es la adecuada y que extensiones usar antes de ser mandadas correctamente a mi b/d, todo con un onsubmit.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

como integro 2 funciones en un solo onsubmit

Publicado por xve (1595 intervenciones) el 20/09/2012 08:15:32
Hola Gabriel, la función validar, la tienes mal, haces referencia a un campo del formulario denominado archivo el cual no existe...

También, creo que tienes que coger su valor... en vez de:
1
var f = frm.elements["archivo"];

creo que tendría que ser:
1
var f = frm.elements["archivo"].value;


La manera de juntar las dos funciones, es con una tercera función algo así:
1
2
3
4
5
6
7
8
9
function xxxx(formulario)
{
    if(validarForm(formulario) && validar())
    {
        return true;
    }else{
        return false;
    }
}


Espero que te sirva... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como integro 2 funciones en un solo onsubmit

Publicado por Gabriel ecmald778@hotmail.com (8 intervenciones) el 20/09/2012 19:44:45
Saludos y gracias por la ayuda, te comento que hizo lo que dices, pero ya no me valida nada, ninguna de las 2 validaciones, junte las validaciones asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function juntar(formulario) {
	 if(validarForm(formulario) && validar())
	 {
function validarForm(formulario) {
	if(formulario.mail.value.length==0) { //¿Tiene 0 caracteres?
    formulario.mail.focus();    // Damos el foco al control
    alert('No puedes dejar campos en blanco'); //Mostramos el mensaje
    return false; //devolvemos el foco
  }
 
  if(formulario.contrasena.value.length==0) { //¿Tiene 0 caracteres?
    formulario.contrasena.focus();    // Damos el foco al control
    alert('No puedes dejar campos en blanco'); //Mostramos el mensaje
    return false; //devolvemos el foco
  }
 
  if(formulario.repcontrasena.value.length==0) { //¿Tiene 0 caracteres?
    formulario.repcontrasena.focus();    // Damos el foco al control
    alert('No puedes dejar campos en blanco'); //Mostramos el mensaje
    return false; //devolvemos el foco
  }
 
  if(formulario.contrasena.value!=formulario.repcontrasena.value) {
    formulario.contrasena.focus();            //comprueba que sean iguales
	alert('Las contraseñas no coinciden');
    return false;
  }
 
 
 
if ((formulario.mail.value.indexOf ('@', 0) == -1)||(formulario.mail.value.length < 5)) {
	 formulario.mail.focus();
    alert("Escriba una dirección de correo válida en el campo \"Dirección de correo\".");
    return (false);
  }
 
 if ((formulario.mail.value.indexOf ('.', 0) == -1)) {
	 formulario.mail.focus();
    alert("Escriba una dirección de correo válida en el campo \"Dirección de correo\".");
    return (false);
  }
 
function validar(){
        var OK = true;
        var frm = document.forms["frm"];
        var f = frm.elements["foto1"].value;
        if( !f.value.match(/.(jpg)|(gif)|(png)|(jpeg)$/) ){
            document.getElementById("msg").innerHTML = "Extension debe ser jpg, jpeg, gif o png";
            OK = false;
        }
        return OK;
    }
 
	return true; //Si ha llegado hasta aquí, es que todo es correcto
 
	}}}


y la forma de mandar a procesarlo asi:

1
2
<form method="post" name= "frm" action="insertar.php"  enctype="multipart/form-data"
onsubmit="juntar(); ">


No se que estare haciendo mal, agradecere mucho su ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

como integro 2 funciones en un solo onsubmit

Publicado por xve (1595 intervenciones) el 20/09/2012 20:26:47
Grabriel, no esta bien cerrada la función juntar!!!
function juntar(formulario) {
if(validarForm(formulario) && validar())
{ <--- esta mal!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como integro 2 funciones en un solo onsubmit

Publicado por Gabriel ecmald778@hotmail.com (8 intervenciones) el 20/09/2012 21:25:59
Si no es mucho abuso, me puedes indicar en el codigo como tengo que cerrar esa funcion, es que no me salen errores de sintaxis. gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar