Foros del Web » Programando para Internet » Javascript »

Problema con un "Checked" en form..

Estas en el tema de Problema con un "Checked" en form.. en el foro de Javascript en Foros del Web. Hola gente. Tengo un formulario al cual quiero comprobar antes de enviar, hice una funcion con javascript (solo se lo basico, y casi ni eso) ...
  #1 (permalink)  
Antiguo 05/01/2005, 17:29
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 21 años
Puntos: 2
Problema con un "Checked" en form..

Hola gente.

Tengo un formulario al cual quiero comprobar antes de enviar, hice una funcion con javascript (solo se lo basico, y casi ni eso) y funciona en un 90%, solo no me comprueba la parte en donde tiene que fijarse si un par de check's estan tildados o no...

este es el codigo javascript que hice:

Código PHP:
<SCRIPT LANGUAGE="JavaScript">
function 
consultax(){
//Si la consulta es general
if (document.consultas.consulta_type.value == "1") {
  if (
document.consultas.nombre.value != "") { 
    if (
document.consultas.email.value != "") { 
      if (
document.consultas.texto.value != "") { 
         return 
true;
         
document.register.submit();
      }
       else { 
alert("El campo 'Mensaje' es obligatorio");
       return 
false;
       }
    }
     else { 
alert("El campo 'Email' es obligatorio");
     return 
false;
     }
  }
   else { 
alert("El campo 'Nombre' es obligatorio");
   return 
false;
   }
}
//Si la consulta es un Presupuesto
 
if (document.consultas.consulta_type.value == "2") {
   if (
document.consultas.nombre.value != "") { 
     if (
document.consultas.email.value != "") { 
       if (
document.consultas.cantidad_paginas.value != "") { 
         if (
document.consultas.url1.value != "") { 
           if (
document.consultas.texto.value != "") { 
             if (
document.consultas.sitio.value == "estatico") {
               return 
true;
               
document.register.submit();
             }
             if (
document.consultas.sitio.value == "dinamico") {
               if (
document.consultas.tecnologia.checked){
                 if (
document.consultas.sistema.checked) {
                   return 
true;
                   
document.register.submit();
                 }
                  else { 
alert("No seleccionaste ningun campo en 'Sistemas'");
                  return 
false;
                  }
               }
                else { 
alert("No seleccionaste ningun campo en 'Tecnologias'");
                return 
false;
                }
             }
           }
            else { 
alert("El campo 'Mensaje' es obligatorio");
            return 
false;
            }
         }
          else { 
alert("El campo 'URL 1' es obligatorio");
          return 
false;
          }
       }
        else { 
alert("El campo 'Cantidad de Archivos' es obligatorio");
        return 
false;
        }
     }
      else { 
alert("El campo 'Email' es obligatorio");
      return 
false;
      }  
   }
    else { 
alert("El campo 'Nombre' es obligatorio");
    return 
false;
    }  
 }
}

   
</script> 
La parte que no esta cumpliendo su funcion es:

if (document.consultas.tecnologia.checked){
if (document.consultas.sistema.checked) {
return true;
document.register.submit();
}
else { alert("No seleccionaste ningun campo en 'Sistemas'");
return false;
}
}
else { alert("No seleccionaste ningun campo en 'Tecnologias'");
return false;
}

Si dejo todos los checks del grupo "tecnologia" sin tildar no envia el alert, y lo mismo para el grupo de checks "sistema"... yo necesito que al menos 1 de cada grupo este chequeado...
__________________
I Love Programming...

Última edición por FuLaNo_; 05/01/2005 a las 17:30
  #2 (permalink)  
Antiguo 06/01/2005, 03:55
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola FuLaNo_

No veo tu formulario, así que voy a jugar un poco a las adivinanzas. Me da la impresión de que tienes puesto el mismo nombre a varios checkbox. Lo que puedes hacer es poner nombres distintos:

<input type="checkbox" name="sistemas1" />
<input type="checkbox" name="sistemas2" />

Y comprobarlo de esta forma:

if (document.consultas.sistema1.checked || document.consultas.sistema2.checked) {

Además hay algo que no me cuadra.

return true;
document.register.submit();

Si haces un return la función termina y no se ejecuta el código que vaya detrás.

Espero que te sirva de orientación. Saludos,
  #3 (permalink)  
Antiguo 06/01/2005, 08:44
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 21 años
Puntos: 2
Hola JavierB, gracias por tu respuesta.

Antes que nada, supones bien, tengo los checks con el mismo nombre, es que siempre uso con nombre diferentes y esta vez queria hacerlo de distinta forma, algo tipo un "array", pero bueno, tendré que volver a hacerlo a la antigua y usando OR para comparar en el if...

Con respecto a:
return true;
document.register.submit();

Claro, es que tengo 3 opciones en la misma funcion, si el formulario es para una consulta, la comprobacion del formulario solo se remite a 3 campos, si es un presupuesto se remite a los mismos 3 que la consulta general sumandole si el usuario elegui "estatico" o "dinamico", si eliguio estatico la funcion termina alli, si eliguio dinamico (if (document.consultas.sitio.value == "dinamico") {) tiene que comparar los checks y otros text... algo complicado pero creo que lo hice bastante bien para ser mi primera vez que hago algo en javascript tan grande (bueno, para mi lo es!).

Saludos.
__________________
I Love Programming...
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 04:43.