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<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="Language" content="Spanish"> <title>esconder y validar bot
ón radio
</title> <link rel="stylesheet" href="css/prueba.css" type="text/css"> <script type="text/javascript" src="script/prueba.js"></script>
<form name="formulario" action="/prueba.pl"> <p><input type="radio" name="grupo1" value="1-1">opci
ón 1
</p> <p><input type="radio" name="grupo1" value="1-2">opci
ón 2
</p> <p><input type="radio" name="grupo1" value="1-3">opci
ón 3
</p> <p><input type="radio" name="grupo2" value="2-1">opci
ón 1
</p> <p><input type="radio" name="grupo2" value="2-2">opci
ón 2
</p> <p><input type="radio" name="grupo2" value="2-3">Esta opci
ón muestra el grupo 3
</p> <p><input type="radio" name="grupo3" value="3-1">opci
ón 1
</p> <p><input type="radio" name="grupo3" value="3-2">opci
ón 2
</p> <p><input type="radio" name="grupo3" value="3-3">opci
ón 3
</p>
<p><input type="submit" name="enviar" value="enviar" id="enviar"></p>
Código Javascript
:
Ver originalvar formulario;
var grupo;
var grupos = [];
var ocultos;
function init()
{
formulario = document.formulario;
grupos = document.getElementsByTagName('fieldset');
grupo = formulario.grupo2;
ocultos = document.getElementById('ocultos');
document.formulario.onsubmit = validar;
for (var i=0; i<grupo.length; i++)
{
if ( i == 2 ) grupo[i].onclick = mostrando;
else grupo[i].onclick = ocultando;
}
}
window.onload = init;
function mostrando()
{
ocultos.style.display = 'block';
}
function ocultando()
{
ocultos.style.display = 'none';
grupo[2].checked = '';
}
function validar()
{
var valido = true;
var radios;
for (var i=0; i<grupos.length; i++)
{
radios = grupos[i].getElementsByTagName('input');
if (valido == false) break;
if (i ==2 && grupo[2].checked ==false) break;
for (var j=0; j<radios.length; j++)
{
if (radios[j].checked)
{
valido = true;
break;
}
else valido = false;
}
}
if (valido == false) alert('formulario no valido');
return valido;
}
//fin
Código CSS:
Ver original#ocultos {
display: none;
}
fieldset {
margin: 5px;
}