Fíjate una cosa
Código:
for(j=0;j<formulario.opcion2.length;j++)
{
if (formulario.opcion2[i].ckecked == true) {
correcto = true;
}
Creas un bucle pero en cada iteración está comprobando el mismo campo formulario.opcion2[
i] e
i es el parámetro que le envías a la función. En el caso de la encuesta con la que estás probando siempre verifica si está activada la opción de la posición
i
Qué es lo que pretendes, que no se envíe la encuesta si no han seleccionado algo?