Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/04/2010, 09:31
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: validacion de un radiobutton emergente (oculto)

Buenas,

dudo mucho que con ese código puedas validar los radios ocultos ya que le estás diciendo que el número de registros a validar son 4, que son los que no están ocultos y la forma en que construyes el name es 'test' + q y el formato del name de los ocultos es 1test, así que dificilmente los podría encontrar.

Por otro lado además el código no hay por donde agarrarlo, tiene bastantes errores y prácticas totalmente desaconsejadas: tienes ids repetidos y deben ser únicos, cierras dos veces el formulario, te falta el action del formulario, las etiquetas es mejor escribirlas siempre en minúsculas y también es costumbre que las variables empiecen por minúscula reservando las mayúsculas para constructores, te falta el doctype que es fundamental, no se deben usar tablas para maquetar, ni cosas del estilo de   y es totalmente aconsejable separar la estructura del documento que sería el html, del diseño que seria el css, del comportamiento que sería el javascript y del php que se ejecuta en la parte del servidor, es decir antes de que se cargue la página o después de que se envie el formulario. Además no indentas el código ni lo coloreas, que ayuda mucho, no sólo a tí, sino a los que te vayan a ayudar, si lo haces así y quitas todo lo superfluo te será más fácil a ti mismo encontrar los errores y recibirás mas ayuda. Lo mejor es hacer un ejemplo sencillo y así es más fácil localizar el problema. Por ejemplo algo así, basado en lo que querías hacer pero simplificado.

Un simple formulario con 3 grupos de radio botones, el tercero oculto que se muestra al pulsar en la última opción del grupo 2 y se esconde al pulsar en otra distinta. Al validar se comprueba que todos los grupos visibles tengan una opción seleccionada y si no es así se cancela el envio del formulario.

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2.   <head>
  3.     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4.     <meta name="Language" content="Spanish">  
  5.     <title>esconder y validar bot&oacute;n radio</title>
  6.     <link rel="stylesheet" href="css/prueba.css" type="text/css">
  7.     <script type="text/javascript" src="script/prueba.js"></script>
  8.   </head>
  9.  
  10.   <body>
  11.     <form name="formulario" action="/prueba.pl">
  12.       <fieldset>
  13.         <legend>Grupo 1</legend>
  14.         <p><input type="radio" name="grupo1" value="1-1">opci&oacute;n 1</p>
  15.         <p><input type="radio" name="grupo1" value="1-2">opci&oacute;n 2</p>
  16.         <p><input type="radio" name="grupo1" value="1-3">opci&oacute;n 3</p>
  17.       </fieldset>
  18.       <fieldset>
  19.         <legend>Grupo 2</legend>
  20.         <p><input type="radio" name="grupo2" value="2-1">opci&oacute;n 1</p>
  21.         <p><input type="radio" name="grupo2" value="2-2">opci&oacute;n 2</p>
  22.         <p><input type="radio" name="grupo2" value="2-3">Esta opci&oacute;n muestra el grupo 3</p>
  23.       </fieldset>
  24.       <fieldset id="ocultos">
  25.         <legend>Grupo 3</legend>
  26.         <p><input type="radio" name="grupo3" value="3-1">opci&oacute;n 1</p>
  27.         <p><input type="radio" name="grupo3" value="3-2">opci&oacute;n 2</p>
  28.         <p><input type="radio" name="grupo3" value="3-3">opci&oacute;n 3</p>
  29.       </fieldset>
  30.      
  31.       <p><input type="submit" name="enviar" value="enviar" id="enviar"></p>
  32.     </form>
  33.   </body>
  34. </html>

Código Javascript:
Ver original
  1. var formulario;
  2. var grupo;
  3. var grupos = [];
  4. var ocultos;
  5.  
  6. function init()
  7. {
  8.     formulario = document.formulario;
  9.     grupos = document.getElementsByTagName('fieldset');
  10.     grupo = formulario.grupo2;
  11.     ocultos = document.getElementById('ocultos');
  12.     document.formulario.onsubmit = validar;
  13.    
  14.     for (var i=0; i<grupo.length; i++)
  15.     {
  16.         if ( i == 2 ) grupo[i].onclick = mostrando;
  17.  
  18.         else grupo[i].onclick = ocultando;
  19.     }
  20. }
  21.  
  22. window.onload = init;
  23.  
  24. function mostrando()
  25. {
  26.     ocultos.style.display = 'block';
  27. }
  28.  
  29. function ocultando()
  30. {
  31.     ocultos.style.display = 'none';
  32.     grupo[2].checked = '';
  33. }
  34.  
  35. function validar()
  36. {
  37.     var valido = true;
  38.     var radios;
  39.     for (var i=0; i<grupos.length; i++)
  40.     {
  41.         radios = grupos[i].getElementsByTagName('input');
  42.        
  43.         if (valido == false) break;
  44.         if (i ==2 && grupo[2].checked ==false) break;
  45.        
  46.         for (var j=0; j<radios.length; j++)
  47.         {      
  48.             if (radios[j].checked)
  49.             {
  50.                 valido = true;
  51.                 break;
  52.             }
  53.             else valido = false;       
  54.         }
  55.        
  56.     }
  57.  
  58.     if (valido == false) alert('formulario no valido');
  59.     return valido;
  60. }
  61.  
  62.  
  63. //fin

Código CSS:
Ver original
  1. #ocultos {
  2.     display: none;
  3. }
  4.  
  5. fieldset {
  6.     margin: 5px;
  7. }