Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/05/2004, 04:46
Avatar de tunait
tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 9 meses
Puntos: 381
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??