Foros del Web » Programando para Internet » Javascript »

Funcion de valicadion de campos.... no regresa return!!!!

Estas en el tema de Funcion de valicadion de campos.... no regresa return!!!! en el foro de Javascript en Foros del Web. Buenos dias!! A todos los Foreros!!!! Estoy haciedno un sistema en el cual debo de validar varios campos de texto los cuales se encuentran dentro ...
  #1 (permalink)  
Antiguo 05/07/2011, 10:11
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 7 meses
Puntos: 10
Funcion de valicadion de campos.... no regresa return!!!!

Buenos dias!!

A todos los Foreros!!!!

Estoy haciedno un sistema en el cual debo de validar varios campos de texto los cuales se encuentran dentro de un formulario (obio no!!).

La funcion que estoy haciendo es para hacer en un sentido una "validacion dinamica" y no tener que repetir la misma validacion para esos campos, esta funcion debe valir si estan o no en blanco y mandar un alert y posteriormente terminar el IF con return para que el usuario llene ese campo. Les dejo el codigo de la funcion:

//funcion para validar los campos sin tener que estar repitiendo el codigo
Código Javascript:
Ver original
  1. function valCampos(objeto,msg)
  2. {
  3.         if(objeto.value==""){ alert(msg); return objeto.focus(); }
  4. }
  5.  
  6. function validaForm()
  7. {
  8.        //mando llamar la funcion
  9.       valCampos(document.form1.texto1,"Llena el campo de XX1");
  10.       valCampos(document.form1.texto2,"Llena el campo de XX2");
  11.       valCampos(document.form1.texto3,"Llena el campo de XX3");
  12. }
Segun yo al momento de validar el primer campo si este esta en blanco debe de mandar el mensaje y posicionarse en el campo con la focus(), pero no lo hace si no que se pasa de largo y valida los tres seguidamente.

la funcion validaForm() la mando a llamar desde mi boton que se encuentra en el formulario.

Código HTML:
Ver original
  1. <form id="form1" name="form1" method="post" action="">
  2.   <label>
  3.   <input type="text" name="texto1" id="texto1" />
  4.   </label>
  5.   <label>
  6.   <input type="text" name="texto2" id="texto2" />
  7.   </label>
  8.   <label>
  9.   <input type="text" name="texto3" id="texto3" />
  10.   </label>
  11.   <p>
  12.     <label>
  13.     <input type="button" name="button" id="button" value="Botón" onclick="validaForm();" />
  14.     </label>
  15.   </p>
  16. </form>

Espero haberme explicado bien!! y muchas gracias deantemano por la ayuda!!

Saludos
__________________
Solo se... que no se nada!!! 0_o
  #2 (permalink)  
Antiguo 05/07/2011, 11:13
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: Funcion de valicadion de campos.... no regresa return!!!!

Hola Huacho12 !

Estas regresando el valor de retorno del método focus, eso no cortaría el flujo a las posteriores llamadas a la función de validación, lo que se podría hacer es avisar en la función si fue válido o no y en base a eso continuar el flujo, pero tendrías que poner un condicional en cada llamada y si válida continuar y si no, cancelar la ejecución.

Para evitar todo ese llenadero de condicionales te propongo utilizar alguna variable booleana que si hay un error de validación indicarlo en la variable, a partir de eso podremos saber si seguir validando en las siguientes llamadas a la función valCampos.

Código javascript:
Ver original
  1. var error = false;
  2. function valCampos(objeto, msg) {
  3.     if(error) {
  4.         return;
  5.     }
  6.     if(objeto.value == "") {
  7.         alert(msg);
  8.         objeto.focus();
  9.         error = true;
  10.     }
  11. }
  12. function validaForm() {
  13.     valCampos(document.form1.texto1, "Llena el campo de XX1");
  14.     valCampos(document.form1.texto2, "Llena el campo de XX2");
  15.     valCampos(document.form1.texto3, "Llena el campo de XX3");
  16.     error = false;
  17. }

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 05/07/2011, 11:29
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Funcion de valicadion de campos.... no regresa return!!!!

Hola!! jahepi

Muchas gracias.

Ya probe lo que comentaste y si funciono!!!!! !!!!!

Pero no entiendo....... bueno si entiendo que creas una variable (error) que tendra un valor true o false..... pero....

por que la inicialisas en false???? o es que con el false haces que continue el llamado a la funcion valCampos??

dentro de la funcion valCampos como definirias la validacion que haces de la variable error o javascript por defecto toma que la estas comparando con true??

Perdon por las preguntas................

De antemano te agradesco la ayuda y la explicacion .

Saludos
__________________
Solo se... que no se nada!!! 0_o
  #4 (permalink)  
Antiguo 05/07/2011, 11:49
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Funcion de valicadion de campos.... no regresa return!!!!

También puedes hacer algo así, para no usar variables externas.

Tienes dos arrays:
El primero (inputs),guarda cada uno de los campos a verificar
El segundo (mensajes), guarda los mensajes que muestras si se produce error.

Luego realizas un bucle por el primer y vas llamando a la función valCampos con cada valor del array. La función valCampos devuelve true si se ha producido un error y false si no.

Por tanto, dentro del bucle compruebas si la llamada es true, y si es así sales de la función.

Código Javascript:
Ver original
  1. function valCampos(objeto,msg)
  2. {
  3.         if(objeto.value=="")
  4.          {
  5.             alert(msg);
  6.             objeto.focus();
  7.              return true;
  8.          }
  9.     return false;
  10. }
  11.  
  12. function validaForm()
  13. {
  14.    
  15.     var inputs = [document.form1.texto1,document.form1.texto2,document.form1.texto3];
  16.     var mensajes = ["Llena el campo de XX1","Llena el campo de XX2","Llena el campo de XX3"];
  17.    
  18.     for(key in inputs){
  19.      if (valCampos(inputs[key],mensajes[key]))
  20.         return;
  21.     }
  22. }
  #5 (permalink)  
Antiguo 05/07/2011, 11:56
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: Funcion de valicadion de campos.... no regresa return!!!!

Hola Huacho12 !

La inicializo en falso para indicar que no ha habido algún error de validación, en cada llamada a la función reviso si la variable error es verdadera, así compruebo que ha habido un error y parar la ejecución de la función.

Si está en falso llegaría hasta el condicional y si el campo está vació mostraría la alerta y cambiaría la variable error a verdadero para indicar que encontró un error de validación así en las siguientes llamadas a la función valCampos como está en verdadero siempre se saldría de la función sin evaluar si el campo está vacío.

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #6 (permalink)  
Antiguo 05/07/2011, 12:05
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: Funcion de valicadion de campos.... no regresa return!!!!

Ve la solución de alexg88 utilizando arreglos, es más elegante y no depende la función de variables de ámbito global, la ventaja, haces tu función reutilizable para otros proyectos.

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #7 (permalink)  
Antiguo 05/07/2011, 12:28
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: Funcion de valicadion de campos.... no regresa return!!!!

Hola jahepi y alexg88!!!!!!!!!!!

Gracias por la explicacion!!

Ok la funcion que menciona jahepi queda genial y no me opongo al uso de vectores como lo indica alexg88.

Ahora que veo con el formulario se me pide que se agregue un list/menu , y este segun yo se valida de una forma diferente a un txt, al final me queda asi:
Código Javascript:
Ver original
  1. var error = false;
  2. function valCampos(objeto,msg)
  3. {
  4.      if(error){ return; }
  5.      if(objeto.value==""){ alert(msg); objeto.focus(); error=true; }
  6.    
  7. }
  8.  
  9. function validaForm()
  10. {
  11.       var seleccionLista;
  12.       //mando llamar la funcion
  13.       valCampos(document.form1.texto1,"Llena el campo de XX1");
  14.       valCampos(document.form1.texto2,"Llena el campo de XX2");
  15.       valCampos(document.form1.texto3,"Llena el campo de XX3");
  16.       error=false;
  17.  
  18.       if(document.form1.lista1[document.form1.lista1.selectedIndex].value!="empty")
  19.      {
  20.           seleccionLista = document.form1.lista1[document.form1.lista1.selectedIndex].value;
  21.      }else{ alert("seleccione una opcion de la lista"); return;}
  22. }

Ahora ya me respeta la validacion de la txt pero al agregar la validacion del list/menu me manda seguido el mensaje del alert del lsit/menu, como le puedo hacer para que me respete de nuevo la validacion de los txt y no se salte luego luego a la del lsit/menu????

Y el formulario quedaria asi:

Código HTML:
Ver original
  1. <form id="form1" name="form1" method="post" action="">
  2.   <label>
  3.   <input type="text" name="texto1" id="texto1" />
  4.   </label>
  5.   <label>
  6.   <input type="text" name="texto2" id="texto2" />
  7.   </label>
  8.   <label>
  9.   <input type="text" name="texto3" id="texto3" />
  10.   </label>
  11.   <p>
  12.     <label>
  13.     <select name="lista1" id="select">
  14.     <option value="empty">Selecciona...</option>
  15.     <option value="empty">opcion 1</option>
  16.     <option value="empty">opcion 2</option>
  17.     <option value="empty">opcion 3</option>
  18.     </select>
  19.     </label>
  20.   </p>
  21.   <p>
  22.     <label>
  23.     <input type="button" name="button" id="button" value="Botón" onclick="validaForm();" />
  24.     </label>
  25.   </p>
  26. </form>


Muchas gracias por su ayuda!!!!!


Saludos
__________________
Solo se... que no se nada!!! 0_o

Etiquetas: campos, funcion, return
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 19:14.