• Lunes 18 de Noviembre de 2024, 23:12

Autor Tema:  Validar + De 100 Campos  (Leído 8863 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Validar + De 100 Campos
« en: Viernes 20 de Octubre de 2006, 15:08 »
0
Hola chicos de SoloCodigo, tengo un problema (como siempre cuando no), lo que pasa es que tengo que validar un formulario con más de 100 campos, y pues JavaScript me va ayudar en esto, el problema es que no quiero hacer 100 if (form.campo.value != ''), por que seria horripilante, existe alguna función que sepa cuantos campos existen en el form, y de esta manera recorrerlos por medio de un bucle?

Gracias Chao.
El pasado son solo recuerdos, el futuro son solo sueños

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #1 en: Viernes 20 de Octubre de 2006, 15:11 »
0
modificado:
no no funciona
El pasado son solo recuerdos, el futuro son solo sueños

xcx

  • Miembro MUY activo
  • ***
  • Mensajes: 175
  • Nacionalidad: cl
    • Ver Perfil
    • Fotos y captura
Re: Validar + De 100 Campos
« Respuesta #2 en: Viernes 20 de Octubre de 2006, 16:16 »
0
Uhm.. Igual va a ser una lata pero quizás esto te pueda ayudar.
Código: Text
  1.  
  2. function validar(forma){
  3. ...
  4. ...
  5. cb = document.getElementsByTagName("input");
  6. ...
  7. checkado = 0;
  8.   for(i=0; i < cb.length; i++){
  9.     if (cb[i].type == "checkbox" && cb[i].checked == true && cb[i].name.substr(0,3) == "bit"){
  10.       checkado++;
  11.     }//if
  12.   }//for
  13. ...
  14. }//validar
  15.  
  16.  
a ver, comentarios:
forma es el formulario en cuestión de la página que quieres validar.
en la lina del cb=document y blablabla, le estoy diciendo que cree un arreglo de todos los elementos de tipo input - así deja de lado los labels, div, etc, solo los input -
una variable checkado para saber en este ejemplo si hay algun checkbox checado.
despues un ciclo for, donde pregunto si el input en cuestión que quiero validar es del tipo checkbox, y si está chequeado y además si su nombre comienza con bit____.
De aquí entonces, sacas en conclusión que tendrás que homologar los nombres.
Bueno, esto lo ocupe en realidad para saber si habian chequeado al menos uno de los checkbox que tenía y si no habian checado más de los correspondientes en una aplicación.
para los tipo input text, pues les cambias el tipo y obviamente no preguntas si vienen checados, y hasta podrias usar el checkField de una funcion javascript que te voy a adjuntar, que lo encontre por ahí y es muy interezante...
ojalá te sirva y te ahorres varias líneas de código...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #3 en: Viernes 20 de Octubre de 2006, 17:17 »
0
yo te hice otro code, es algo parecido al de xcx, nada mas que solo valida que los campos no esten vacios, espero te sirva :P
Código: Text
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  
  3. <html>
  4. <head>
  5. <title>Untitled</title>
  6. <script language="JavaScript" type="text/javascript">
  7. <!--
  8. function valida(){
  9. var x=document.prueba.length;
  10. var i=0;
  11. for (i=0; i<x; i++){
  12.  if (document.prueba(i).value==''){
  13.   alert ('error');
  14.   break;
  15.  }
  16. }
  17. }
  18. //-->
  19. </script>
  20.  
  21. </head>
  22. <body>
  23. <form name="prueba">
  24. <input type='text' name="obj1">
  25. <input type='text' name="obj2">
  26. <input type='text' name="obj3">
  27. <button name="obj4" onclick='valida()'>pruebame</button>
  28. </form>
  29. </body>
  30. </html>
  31.  

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #4 en: Viernes 20 de Octubre de 2006, 17:56 »
0
Buenos codigos...  :comp:


aqui esta una funcion como apoyo para validar que no esten vacios los campo, la puedes conjugar co n los codigos que ya te enviaron que creo que hay que detallar segun tus necesidades asi que para que poner lo mismo :P

para evitar que coloquen espacios :)


Código: Text
  1.  
  2. //Validacion de campos de texto no vacios by Mauricio Escobar
  3. //Iván Nieto Pérez
  4.  
  5. function vacio(texto) {
  6.         for ( i = 0; i < texto.length; i++ )
  7.         {
  8.                 if ( texto.charAt(i) != " " )
  9.                 {
  10.                         return false
  11.                 }
  12.         }
  13.         return true
  14. }
  15.  
  16.  

Nota: hace tiempo la tome de la web, esos son los autores no recuerdo si la modifique  :unsure:


Suerte
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #5 en: Viernes 20 de Octubre de 2006, 18:13 »
0
No es por nada pero ninguno me funciona :(
Me va a tocar hacer 1 if y131 else if
:(  :(
El pasado son solo recuerdos, el futuro son solo sueños

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #6 en: Viernes 20 de Octubre de 2006, 18:32 »
0
??????????????? como que ninguno te funciona, que navegador utilizas, yo lo probe en firefox y explorer y todo bien, no se el de los demas, pero tambien se ven bien

modificado
upss rectifico acabo de darme cuenta que tenia algo que te podria marcar error o no funcionar :P
Citar
if (document.prueba(i).value==''){
cambialo por
Código: Text
  1.  if (document.prueba[i].value==''){
  2.  
solo cambia parentesis por corchetes :P sorry

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Validar + De 100 Campos
« Respuesta #7 en: Viernes 20 de Octubre de 2006, 18:45 »
0
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

xcx

  • Miembro MUY activo
  • ***
  • Mensajes: 175
  • Nacionalidad: cl
    • Ver Perfil
    • Fotos y captura
Re: Validar + De 100 Campos
« Respuesta #8 en: Viernes 20 de Octubre de 2006, 19:48 »
0
porqué no te funciona?
buena pregunta   :huh: se me olvido decir que el archivo que adjunté se debe incluir y despues puedes usar la función checkField, aunque eso lo suponía como obvio por que es un js.
..
Que tipo de input son los que quieres validar? son text? select? checkbox? me extraña que ningun código de los anteriores no te haya servido, porque la función que comenté, en compañía del formcheck he podido validar formularios bastantes extensos..
Por ejemplo, el uso del checkField para campos de tipo text sería
Código: Text
  1.  
  2. ..
  3. <script type="text/JavaScript" src="formcheck.sj"></script>
  4. ..
  5. ..
  6. var correcto;
  7. correcto = true;
  8. if (correcto) correcto = checkField(forma.intervalo1a, isDirecc, false, "Por favor ingrese un intervalo para el primer nivel");
  9. if (correcto) correcto = checkField(forma.intervalo1b, isDirecc, false, "Por favor ingrese un intervalo para el segundo nivel");
  10. ...
  11.  
  12.  
si la variable "correcto" se setea en false, el resto de las validaciones no se sigue realizando, y como la función checkField, despues de desplegar el mensaje te hace un select() y despues un focus(), dejá posicionado el cursor donde encontró el error, algo útil para los usuarios cuando han tipeado mal y no saben donde... ;)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #9 en: Viernes 20 de Octubre de 2006, 20:13 »
0
Ya me funciona esta, gracias ArKaNtOs.
Código: Text
  1. <script language="JavaScript" type="text/javascript">
  2. <!--
  3. function valida(){
  4. var x=document.prueba.length;
  5. var i=0;
  6. for (i=0; i<x; i++){
  7. if (document.prueba(i).value==''){
  8.  alert ('error');
  9.   break;
  10. }
  11. }
  12. }
  13. //-->
  14. </script>
  15.  
La he modificado un poquito de acuerdo a un pequeño requerimiento, jejeje, lo malo es que si el primer campo no esta lleno los demas no se me quieren validar.
PD. Empiezo desde el septimo por que desde este empiezo a hacer la validación.

Código: Text
  1. function valida()
  2. {
  3.  var x=document.formComerlat.length;
  4.  var h=0;
  5.  var i=7;
  6.  for (i; i<x; i++){
  7.   if (document.formComerlat[i].value=='')
  8.   {
  9.    h=0;
  10.   }
  11.   else
  12.   {
  13.    h=1;
  14.   }
  15.   if (h==1)
  16.   {
  17.    return(true);
  18.   }
  19.   else
  20.   {
  21.    alert ('Por lo menos debe escoger un producto');
  22.    return(false);
  23.   }
  24.  }
  25. }
  26.  
  27.  
Me pegue en este pedacito
El pasado son solo recuerdos, el futuro son solo sueños

xcx

  • Miembro MUY activo
  • ***
  • Mensajes: 175
  • Nacionalidad: cl
    • Ver Perfil
    • Fotos y captura
Re: Validar + De 100 Campos
« Respuesta #10 en: Viernes 20 de Octubre de 2006, 20:48 »
0
uhm.. debieras poner una condición para saber que elemento estas validando, por la función que tienes asumiría que son todos de tipo text. es así o no? tienes de otros tipos?

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #11 en: Viernes 20 de Octubre de 2006, 21:07 »
0
Cita de: "xcx"
uhm.. debieras poner una condición para saber que elemento estas validando, por la función que tienes asumiría que son todos de tipo text. es así o no? tienes de otros tipos?
Sipi todos son de tipo Text, mira esta es la página: http://www.comerlatpharma.com/prueba/
Ahi veras que no se esta validando, sino el primero.
El pasado son solo recuerdos, el futuro son solo sueños

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #12 en: Viernes 20 de Octubre de 2006, 21:34 »
0
mira por si te sirve para agregar datos de un array en php te va a convenir ponerles de name a todos tus text algo asi
<input type=''text" name=campo[]> esto con el fin de que te sea facil recogerlo con php ;)

xcx

  • Miembro MUY activo
  • ***
  • Mensajes: 175
  • Nacionalidad: cl
    • Ver Perfil
    • Fotos y captura
Re: Validar + De 100 Campos
« Respuesta #13 en: Viernes 20 de Octubre de 2006, 22:11 »
0
Mira esto...
espero que te sirva...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #14 en: Viernes 20 de Octubre de 2006, 22:14 »
0
Miren ya lo arregle.
Gracias a todos.

Código: Text
  1. function valida(){
  2.  var x=document.formComerlat.length;
  3.  var h=0;
  4.  alert (x);
  5.  var i=6;
  6.  var otravariablemasparagastarmasespacioquejodano=0;
  7.  for (i; i&#60;x; i+=2)
  8.  {
  9.   if (document.formComerlat[i].value=='')
  10.   {
  11.    h=0;
  12.   }
  13.   else
  14.   {
  15.    h=1;
  16.    if (h==1) otravariablemasparagastarmasespacioquejodano=h;
  17.   }
  18.   //alert(i +' '+ h);
  19.  }
  20.   //alert(otravariablemasparagastarmasespacioquejodano);
  21.   if (otravariablemasparagastarmasespacioquejodano==1)
  22.   {
  23.    return(true);
  24.   }
  25.   else
  26.   {
  27.    alert ('Por lo menos debe escoger un producto');
  28.    return(false);
  29.   }
  30. }
  31.  
El pasado son solo recuerdos, el futuro son solo sueños

xcx

  • Miembro MUY activo
  • ***
  • Mensajes: 175
  • Nacionalidad: cl
    • Ver Perfil
    • Fotos y captura
Re: Validar + De 100 Campos
« Respuesta #15 en: Viernes 20 de Octubre de 2006, 22:20 »
0
Que bueno  :D
De todas formas, hecha un vistazo al que te adjunte en el post anterior. Quizás algo te sirva de todo eso..  :hola:

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #16 en: Viernes 20 de Octubre de 2006, 22:55 »
0
Sera mucho molestar si ahora regunto como enviar esos datos recogidos por javascript para capturarlos en variables? :unsure:
El pasado son solo recuerdos, el futuro son solo sueños

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Validar + De 100 Campos
« Respuesta #17 en: Sábado 21 de Octubre de 2006, 03:38 »
0
Primero y principal, también podrías usar lo siguiente:

Citar
msg = '';
form = document.nombre_formulario;
for(d=0; d<form.elements; d++){
    if(form.elements[d].value == '') msg += 'El campo '+form.elements[d].name' está vacío\n';
}

if(msg)
   alert(msg);
else
   form.submit();


También podrías recorrer todo el formulario con un for in:
Citar
for(prop in form){
   campo = eval('form.'+prop);
}


Ambos códigos sirven para recorrer todo el formulario, tenga este inputs, hidden, textarea, o cualquier otro tipo de campo...

Para el envío del formulario, podés usar la función submit() . Es una función propia de los formularios, equivale a presiona un boton del tipo submit.


Espero que te haya servido.
Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #18 en: Sábado 21 de Octubre de 2006, 09:43 »
0
asi es como ya te dijo Altareum al final de la validacion y ya que todos los datos allan sido validados solo pondras, el nombredetuform.submit() y listo. ahora del lado del html es coveniente que todos los name de tus input sean algo asi:
<input type=text name=miarray[]> y por ultimo en la recepcion por parte de php seria:

$miarreglo = $_POST['miarray'];
$n = count($miarreglo);
$i = 0;
while ($i < $n){
 echo $postre[$i], "<br>";
 $i++;
}

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #19 en: Sábado 21 de Octubre de 2006, 16:18 »
0
Cita de: "ArKaNtOs"
asi es como ya te dijo Altareum al final de la validacion y ya que todos los datos allan sido validados solo pondras, el nombredetuform.submit() y listo. ahora del lado del html es coveniente que todos los name de tus input sean algo asi:
<input type=text name=miarray[]> y por ultimo en la recepcion por parte de php seria:

$miarreglo = $_POST['miarray'];
$n = count($miarreglo);
$i = 0;
while ($i < $n){
 echo $postre[$i], "<br>";
 $i++;
}
Hola ArKaNtOs muchas gracias por toda la ayuda, y también al resto de chavos; mira lo creo de esta forma, pero no me captura los valores al darle el submit.
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1-->while ($fila=mysql_fetch_array($idresult))
  {
   $i+=1;
   $codigo=$fila[0];
   $Nombre=$fila[2];
   echo "<tr><td class='Estilo17, marco' align='center'>".$codigo."</td><td class='Estilo17, marco'>".$Nombre."</td>";
   echo "<td class='Estilo17, marco'>
           <div align='center'>
             <input size='5' maxlength='5' style='text-align: center;' name='code[".$codigo."]'>
      </div>
         </td>
         <td class='Estilo17, marco'>
           <div align='center'>$
             <input size='5' maxlength='5' style='text-align: right;' name='can[".$i."]'>
           </div>
         </td></tr>";
  }<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
El pasado son solo recuerdos, el futuro son solo sueños

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #20 en: Sábado 21 de Octubre de 2006, 17:44 »
0
mira tu error es que en el name de los input estas asignando valores digamos:
 <input size='5' maxlength='5' style='text-align: center;' name='code[".$codigo."]'>
 cambialo por:
 <input size='5' maxlength='5' style='text-align: center;' name='codigo[]'>

y

  <input size='5' maxlength='5' style='text-align: right;' name='can[".$i."]'>
 cambialo por:
   <input size='5' maxlength='5' style='text-align: right;' name='can[]'>

cualquier duda me avisas :)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #21 en: Sábado 21 de Octubre de 2006, 17:47 »
0
Ya lo habia hecho asi y me dio igual, adjunto el code de validar.php
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><?php
echo $size=count($_POST).'<br>';
if ($_POST['cliente'] && $_POST['razon'] && $_POST['dire'] && $_POST['city'] && $_POST['nit'] && $_POST['orden'])
{
  echo "Se enviara un mail para la solicitud.";
}
else
{
  echo "<script type='text/javascript'>alert('Los campos Cliente, Razon Social, Direccion, Ciudad, NIT y Numero de orden deben estar completamente diligenciados.');history.back(-1);</script>";
}
//echo $codi,'<br>',$name,'<br>','<br>';
echo $cliente.'<br>'.$razon.'<br>'.$dire.'<br>'.$city.'<br>'.$nit.'<br>'.$orden.'<br>';
$codigos = $_POST['code'];
$m = count($codigos);
$i = 0;
while ($i < $n)
{
 echo $postre[$i], '<br>';
 $i++;
}
$canti = $_POST['can'];
$n = count($canti);
$i = 0;
while ($i < $n)
{
 echo $postre[$i], '<br>';
 $i++;
}
?><!--html2--></td></tr></table><div class='postcolor'><!--html3-->
El pasado son solo recuerdos, el futuro son solo sueños

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Validar + De 100 Campos
« Respuesta #22 en: Sábado 21 de Octubre de 2006, 17:59 »
0
jejejejejejejejeje :P

$canti = $_POST['can'];
$n = count($canti);
$i = 0;
while ($i < $n)
{
echo $postre[$i], '<br>';
$i++;
}
este code lo tenia guardado de un sitio que habia visto hace tiempo :P y perdona cambia esto
echo $postre[$i], '<br>'; por esto echo $canti[$i], '<br>'; sorry

$codigos = $_POST['code'];
$m = count($codigos);
$i = 0;
while ($i < $n)
{
echo $postre[$i], '<br>';

cambia el echo $postre[$i], '<br>'; por esto echo $codigos[$i], '<br>';