Foros del Web » Programando para Internet » Javascript »

problema con validar campos diferentes

Estas en el tema de problema con validar campos diferentes en el foro de Javascript en Foros del Web. Buenos dias Es primera vez q escribo aca asi q me disculpo de antemano si estoy en el lugar equivocado y agradezco al q logre ...
  #1 (permalink)  
Antiguo 26/06/2014, 13:09
 
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Información problema con validar campos diferentes

Buenos dias

Es primera vez q escribo aca asi q me disculpo de antemano si estoy en el lugar equivocado y agradezco al q logre ayudarme...tengo un formulario con 14 campos cedula1 cedula2 etc... se requiere q no se repita el valor de ninguno es decir q al momento de dar enviar en el formulario me diga este numero de cedula se encuentra mas de una vez o algo asi

realmente estoy un poco perdida en este concepto y no he logrado solucionarlo les agradezco mucho
  #2 (permalink)  
Antiguo 26/06/2014, 13:53
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema con validar campos diferentes

Es mejor manejes cedulas[] como un array:

Código Javascript:
Ver original
  1. <form action="tu_script.php" method="get" name="frm" onsubmit="return valida_cedula()">
  2.     Cedula:<br/>
  3.     <input type="text" name="cedula[]"/><p/>
  4.    
  5.     Cedula:<br/>
  6.     <input type="text" name="cedula[]"/><p/>
  7.    
  8.     Cedula:<br/>
  9.     <input type="text" name="cedula[]"/><p/>   
  10.    
  11.     Cedula:<br/>
  12.     <input type="text" name="cedula[]"/><p/>
  13.     <!-- sigues repitiendo si quieres (..) -->
  14.    
  15.     <input type="submit" name="submit" value="Procesar" />
  16. </form>
  17.    
  18.  
  19. <script type="text/javascript">
  20.  
  21. function valida_cedula()
  22. {      
  23.     cedulas = document.getElementsByName('cedula[]');
  24.    
  25.     for (i=0;i<cedulas.length;i++)
  26.         for (j=0;j<cedulas.length;j++)         
  27.             if ((i!=j) && (cedulas[i].value == cedulas[j].value))
  28.             {  
  29.                 alert('Colision de cedulas entra la #'+(i+1)+' y la #'+(j+1)); 
  30.                 return false;
  31.             }
  32.        
  33.  
  34.   return true;
  35. }
  36.  
  37. </script>
__________________
Salu2!
  #3 (permalink)  
Antiguo 27/06/2014, 11:42
 
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con validar campos diferentes

Si quizas esto hubiese sido posible pero por otra funcion q realiza estos campos cedula envian esta info a otro archivo y de ahi trae la info de la persona ahora lo q necesito es como validar q antes de traer esta info revise q en los otros 13 campos cedula no este este mismo numero de cedula digitado ... por favor si me pueden ayudar es un poco urgente
  #4 (permalink)  
Antiguo 27/06/2014, 11:52
 
Fecha de Ingreso: junio-2014
Mensajes: 1
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: problema con validar campos diferentes

Hola patricia y hola Italico76, me parecio bien la forma en que haces el chequeo de los datos aunque tiene un detalle y es que a partir de la segunda vuelta se vuelve a comparar el segundo elemento del array con el primeto y en la tercera vuelta el tercer elemento con el primero y el segundo, y asi sucesivamente, para resolverlo debes colocar en la verficacion un < en ves de !=.

Código Javascript:
Ver original
  1. if ((i<j) && (cedulas[i].value == cedulas[j].value))

Asi a partir de la segunda vuelta se comienza la comparacion a partir del 2 con el tercero y en la tercera a partir del tercero con el cuarto.

Asi se mejora un poco el rendimiento del algoritmo.

hasta luego esepero que les sirva de algo esta nota.

Etiquetas: campos, formulario, iguales, validacion
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 16:48.