Foros del Web » Programando para Internet » Javascript »

Controlar estado de "radiobutton" dependiendo del estado de un checkbox

Estas en el tema de Controlar estado de "radiobutton" dependiendo del estado de un checkbox en el foro de Javascript en Foros del Web. Hola, os comento mi problema, en una página tengo un formulario con varios checkbox y radiobutton, los tengo alternando, un checkbox y en la siguiente ...
  #1 (permalink)  
Antiguo 11/05/2006, 19:55
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 10 meses
Puntos: 1
Exclamación Controlar estado de "radiobutton" dependiendo del estado de un checkbox

Hola, os comento mi problema, en una página tengo un formulario con varios checkbox y radiobutton, los tengo alternando, un checkbox y en la siguiente línea varios radiobutton en una misma línea, y así sucesivamente varios, el caso es que quiero controlar, que sea obligatorio marcar uno de los radiobutton sólo cuándo marco la checkbox que está en la línea anterior, sino no me debe dejar enviar el formulario.

El caso es que he probado poniendo lo siguiente:

Hay tres casillas radiobutton, con el mismo nombre y diferentes valores.

Código:
with (document.formulario) // para ahorrarme tener que escribirlo cada vez
{
   if (checkbox.checked == true) 
     if (radiobutton == '')
     {
         alert ("mensaje")
         radiobutton.focus()
     }
}
También he probado a ponerlo como array:

Código:
with (document.formulario) // para ahorrarme tener que escribirlo cada vez 
if (checkbox.checked == true) 
   if (radiobutton[0] == '') OR (radiobutton[1]) OR (radiobutton[2]) 
   {
      alert ("mensaje")
      radiobutton[0].focus()
   }
}
Pero sigue sin ir, y ya no se me ocurre de que otra manera probar, estoy desesperado ya.

He estado echándole un vistazo a los artículos "Los objetos radio y checkbox" y "Los objetos radio y checkbox II" que están dentro del manual "Formularios y JavaScript" que es en los que me he servido de base para construir el código arriba puesto, pero aún así el problema continúa.


También me gustaría, aunque igual va a ser ya mucha complicación las dos cosas, que al principio, todos los radiobutton salieran desactivados, no se puedieran marcar, y sólo cuándo pulso en el checkbox correspondiente me aparezcan los radiobutton asignados a él, por decirlo de alguna manera, chekbox 1 no marcado, y los radio button de la línea siguiente salgan desactivados, y cuándo marque el checkbox se activen, y así con cada uno de los checkbox. Esto último es secundario y tampoco me importa mucho, lo que me interesa de verdad es lo del primer párrafo.


Un saludo.

Última edición por rvelezb; 11/05/2006 a las 20:01
  #2 (permalink)  
Antiguo 12/05/2006, 02:08
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Hola rvelezb

Te dejo un código para habilitar/deshabilitar los radio. También puede servirte de orientación para las validaciones:
Código:
<html>
<head>
<script type="text/javascript">
function habilita(obj) {
  for (i=0; i<3; i++)
    document.forms[0][obj.name+'s'][i].disabled = !obj.checked;
}
</script>
</head>
<body>
<form>
<input type="checkbox" name="uno" onclick="habilita(this)" />
<input type="radio" name="unos" disabled="disabled" />
<input type="radio" name="unos" disabled="disabled" />
<input type="radio" name="unos" disabled="disabled" />
</form>
</body>
</html>
Saludos,
  #3 (permalink)  
Antiguo 12/05/2006, 07:22
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 10 meses
Puntos: 1
Pregunta

Hola, lo primero darte las gracias por tu ayuda, y lo segundo no sé si es que soy muy torpe yo, o es que no lo hago bien, pero no me funciona el código, tengo que decirte que mis conocimientos de JavaScript no son muy amplios, son más bien básicos, así que un par de preguntas sobre el código que has puesto:


- Dónde pones "document.forms", ¿hay que poner "document.nombre_formulario.nombre_radio" ?

- Dónde pones "obj.name", ¿hay que cambiar "name" por el nombre del radio, del checkbox o porqué?.

Y para la validación sigo sin saber por dónde cogerlo, yo creo que tiene que ser algo por este estilo, pero con alguna variación ya que éste no funciona:

Código:
if (document.formulario.checkbox.checked == true) 
   if (document.formulario.radio == '')

Perdona de nuevo las molestias, pero cómo ya te he dicho mi nivel de Javascript es bastante básico.


Un saludo.
  #4 (permalink)  
Antiguo 12/05/2006, 11:22
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 10 meses
Puntos: 1
De acuerdo

Hola, qué tal, ya di con la solución, no iba mal encaminado, el planteamiento era correcto (el 2º código que puse en el mensaje original), simplemente era que preguntaba si el radiobutton estaba vacío (radio[n] == ''), cuándo lo que debía de preguntar era si estaba seleccionada (radio[n].checked), y la condición la expresaba mal (en vez de ser OR era ||), por lo que el código quedaría así:

Código:
if (checkbox.checked == true)
   if ((radio[0].checked)  || (radio[1].checked) || (radio[2].checked)) {}
   else
   {
       alert ("mensaje de error")
       radio.focus()
   }
Todo esto por cada una de las casillas checkbox que quiera que controlen radiobutton.

Muchas gracias de todos modos.
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:25.