
claro, ahí te lo explicoteo
El problema principal que se te planteaba era que desconocías el nombre exacto que iba a tener el formulario y cada uno de los radios.
Como la condición para enviar el formulario es que haya al menos un radio seleccionado, y nada más, en vez de referenciarlos por su nombre lo hice desde el array de elementos que contiene el form que se crea automáticamente en el navegador.
Primero cambié el botón para que fuera un submit, en vez de un button y la llamada a la validación la metí en el evento onsubmit del formulario pidiéndole que le trajera de vuelta un valor de retorno true o false. Si es true, lo envía. Si es false, no lo envía y se queda quieto.
<form name="Encuesta<%=(Recordset1.Fields.Item("IdEncues ta").Value)%>" method="post" action="validar.asp"
onsubmit="return validar(this)">
Le paso como parámetro a la función el objeto form mediante la sentencia
this que sería lo mismo que decirle document.nombredeformulario. Pero como no sabemos su nombre, pues le decimos "yo mismo" osea, el formulario (independientemente de cómo se llame).
Así salta a la función javascript recogiendo el formulario en
donde
function validar(
donde){
creamos una variable que guardará true o false dependiendo de si se ha seleccionado algún radio. Inicialmente está en false
ok = false
arrancamos un bucle que dé tántas vueltas como elementos tenga el formulario
for(m=0;m<donde.elements.length;m++){
... y en cada vuelta del bucle accedemos a cada elemento mediante su posición. Usamos m para comenzar desde el elemento 0 incrementándola en cada vuelta para que en cada una verifique el elemento siguiente del formulario.
Comprobamos cada elemento que sea de tipo radio y si está checkado
if (donde.elements[m].type == "radio" && donde.elements[m].checked == true){
Si ambas condiciones se cumplen yá está bien y se puede detener la comprobación del resto de elementos y cambiamos el valor de la variable
ok a true
ok = true
break
Si ninguna de las dos condiciones se ha cumplido durante ninguna de las vueltas del bucle, la variable ok seguirá en false.
Así finalmente comprueba la variable ok.
if(ok){
return true
}
si ok devuelve true, devolverá true al formulario y éste se enviará
else{
alert('debe seleccionar alguna opción')
return false
}
si no, devolverá false al formulario y además dará una alerta advirtiéndo que no sea vago/a y haga click en alguna de las opciones.
Y yá
¿Logré explicotearme??