Foros del Web » Programando para Internet » Javascript »

LLamar dos funciones con onsubmit ??

Estas en el tema de LLamar dos funciones con onsubmit ?? en el foro de Javascript en Foros del Web. Hola. mi problema es que no veo la forma de llamar las dos funciones q validan mi formulario. una valida campos vacios y la otra ...
  #1 (permalink)  
Antiguo 12/01/2013, 14:52
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
LLamar dos funciones con onsubmit ??

Hola.
mi problema es que no veo la forma de llamar las dos funciones q validan mi formulario.
una valida campos vacios y la otra valida solo numero.

aqui mi <html>

<html>
<head>
<script type="text/javascript" src="funcion.js"></script>
</head>
<body>
<form name="prueba" onsubmit="return Validar_CampoVacio(this, 'nombre', 'apellido','telefono')" >
Nombre:<input type="text" name="nombre" id='nombre' /><br><br>
Apellido:<input type="text" name="apellido" /><br><br>
Telefono:<input type="text" name="telefono" id="telefono" /><br><br>
<button type="submit">enviar formulario</button>
</form>
<body >
</body>
</html>

aqui mi <script>

function Validar_CampoVacio()
{
params = Validar_CampoVacio.arguments;
f = params[0];
for (var i = 1, total = params.length; i < total; i++)
{
if (f[params[i]].value == "")
{
alert("debe rellenar el campo: " + params[i]);
f[params[i]].focus();
return false;

}
}
}


function SoloNumero(){
var campo = document.getElementById('telefono).value
if(isNaN(campo)){
alert('Debes escribir un numero valido');
return false;
}

}

las dos funciones por separado si sirven..
pero si pongo las dos solo me valida la (1) primera. :(

e intentado..

intentos fallidos:
__________________________________________________ ____________
<form name="prueba" onsubmit="return Validar_CampoVacio(this, 'nombre', 'apellido','telefono');SoloNumero()" >
__________________________________________________ _____________
<form name="prueba" onsubmit="return Validar_CampoVacio(this, 'nombre', 'apellido','telefono')&&SoloNumero()" >
__________________________________________________ ______________
<form name="prueba" onsubmit="return (Validar_CampoVacio(this, 'nombre', 'apellido','telefono');SoloNumero())" >

separantolas por ";" punto y coma
separantolas por "&&" Y
entre "()" parentesis

y nada.

alguien me podria decir como solucionar este prolemilla.

gracias..
  #2 (permalink)  
Antiguo 12/01/2013, 16:49
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: LLamar dos funciones con onsubmit ??

Hola:

¿No te ha servido "&&"?... creo que es lo adecuado...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 13/01/2013, 10:18
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: LLamar dos funciones con onsubmit ??

NO nada no me funciona con && ni con nada.
  #4 (permalink)  
Antiguo 13/01/2013, 10:29
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: LLamar dos funciones con onsubmit ??

es que viendo las funciones
Código Javascript:
Ver original
  1. function Validar_CampoVacio()
  2. {
  3.     params = Validar_CampoVacio.arguments;
  4.     f = params[0];
  5.     for (var i = 1, total = params.length; i < total; i++)
  6.     {
  7.         if (f[params[i]].value == "")
  8.         {
  9.             alert("debe rellenar el campo: " + params[i]);
  10.             f[params[i]].focus();
  11.             return false;
  12.         }
  13.     }
  14. }
  15.  
  16.  
  17. function SoloNumero(){
  18.     var campo = document.getElementById('telefono').value
  19.     if(isNaN(campo)){
  20.         alert('Debes escribir un numero valido');
  21.         return false;
  22.     }
  23. }

ninguna de las dos da un return true si es valido el formulario
la no encontrar el return creo que no hace nada el submit, que deberías de hacer??

Código Javascript:
Ver original
  1. function Validar_CampoVacio()
  2. {
  3.     params = Validar_CampoVacio.arguments;
  4.     f = params[0];
  5.     for (var i = 1, total = params.length; i < total; i++)
  6.     {
  7.         if (f[params[i]].value == "")
  8.         {
  9.             alert("debe rellenar el campo: " + params[i]);
  10.             f[params[i]].focus();
  11.             return false;
  12.         }
  13.     }
  14.     return true;
  15. }
  16.  
  17.  
  18. function SoloNumero(){
  19.     var campo = document.getElementById('telefono').value
  20.     if(isNaN(campo)){
  21.         alert('Debes escribir un numero valido');
  22.         return false;
  23.     }
  24.     return true;
  25. }

prueba y nos comentas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 13/01/2013, 12:09
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: LLamar dos funciones con onsubmit ??

o. si me sirvio retornando true.
gracias: carlos_belisario funciona 100% :) :)

ya me estaba desesperando.

pero entonces la parte de return true;

es como si fuera la parte contraria del codigo cierto..?

o esq de alguna u otra forma va return true; ??
no me queda muy claro...

Última edición por cristo995; 13/01/2013 a las 12:16
  #6 (permalink)  
Antiguo 13/01/2013, 13:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: LLamar dos funciones con onsubmit ??

Cita:
Iniciado por cristo995 Ver Mensaje
o. si me sirvio retornando true.
gracias: carlos_belisario funciona 100% :) :)

ya me estaba desesperando.

pero entonces la parte de return true;

es como si fuera la parte contraria del codigo cierto..?

o esq de alguna u otra forma va return true; ??
no me queda muy claro...
Te pongo una variante
Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5.  
  6. <script type="text/javascript">
  7. //<![CDATA[
  8.  
  9. function Validar_CampoVacio(){
  10. var mensaje = "";
  11. var mensaje_tel = "";
  12. var params = Validar_CampoVacio.arguments;
  13.     for (var i = 0; i < params.length; i++){
  14.         if(document.getElementById(params[i]).value == ""){
  15.         mensaje += "Debe rellenar el campo " + (params[i]) + "\n\r";
  16.         }
  17.     }
  18.    
  19.     var campoTel = document.getElementById('telefono');
  20.     if(!validarNumero(campoTel.value)){
  21.         if(campoTel.value != ""){
  22.         mensaje_tel += "Telefono debe ser un número";
  23.         }
  24.     }
  25.  
  26. // para sacar todos los mensajes juntos
  27.     if((mensaje != "")||(mensaje_tel != "")){
  28.     alert(mensaje + mensaje_tel);
  29.     return false; // recién aqui devolvés false
  30.     }
  31. }
  32.  
  33. function validarNumero(input){
  34. return (!isNaN(input)&&parseInt(input)==input);
  35. }  
  36. //]]>
  37. </script>
  38. <title></title>
  39. </head>
  40. <body>
  41. <form name="prueba" action="test.php" onsubmit="return Validar_CampoVacio('nombre', 'apellido','telefono')" id="prueba">
  42. Nombre:<input type="text" name="nombre" id='nombre' value="" /><br />
  43. <br />
  44. Apellido:<input type="text" name="apellido" id="apellido" value="" /><br />
  45. <br />
  46. Telefono:<input type="text" name="telefono" id="telefono" value="" /><br />
  47. <br />
  48. <button type="submit">enviar formulario</button></form>
  49. </body>
  50. </html>

Primero un par de correciones sobre tu código original, en
getElementById('telefono).value falta el cierre de la comilla en teléfono
ya que le puiste id a nombre y telef, ponéselo a apellido

Cuando llamás una función con return, el evento espera una respuesta de dicha función, en el caso del onsubmit (que implica justamente eso, hacer un submit, y el button dentro de un form efectivamente los hace), de no recibir un false, la acción del submit sigue su curso natural y dirije al action (que digamos, tampoco fué definido en el form).
Luego podés sacar un mensaje individualmente, o, generar un mensaje en el error y posteriormente evaluar si el mensaje no es = ""; y sacar el mensaje de error trás hacer todas las validaciones (que incluso podrían ser más)
Otro detalle, en lo propuesto pos Carlos, un simple isNaN() te daría como falso tanto para un entero como para un float, pero intuyo que por ser un telefono solo querés enteros, de ahi que yo usé otra función para evaluar eso.
Finalmente, deberías mejorar la validación de campos vacios, ya que una sucesión de espacios en blanco con la barra espaciadora no es una cadena vacía precisamente.
Hay otras variantes, pero esta que puse es lo que m´´as se asemeja a la que hiciste.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: funciones, html, onsubmit
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 09:49.