image
Inicio » Foros » JavaScript

JavaScript

Validar seleccion de radio button

Volver al foro | Responder | Añadir nuevo tema


De: German Herrera C.
Fecha: 23/11/2006
Mensaje:

Según la siguiente aplicación:

 

<form name="Califica" method="post" action="califica.php" OnSubmit="return validar(this);">

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<?

 include("config.php");

 $sql="select * from preguntas order by id asc";

 $pregunta = mysql_query($sql,$db) or die (mysql_error());

 $registros= mysql_num_rows($pregunta);

 while($reg=mysql_fetch_array($pregunta))

 {

   // selecciono todas las preguntas

   $npreg=$reg['id'];

   $preg=$reg['pregunta'];

   ?>

   <table width=100% border=0>

    <tr>

     <td colspan=3 id=texto><? echo $npreg."-". $preg; ?></td>

    </tr>

    <tr>

     <td width=20%>&nbsp;</td>

     <td width=60%>

       <table width=100% border=0

        <?

        //Selecciono las respuestas para cada una de las preguntas

        $sq="select * from respuestas where id_preg = '$npreg' order by id desc";

        $respuesta = mysql_query($sq,$db) or die (mysql_error());

        while($rg=mysql_fetch_array($respuesta))

        {

          $idre=$rg['id'];

          $idpr=$rg['id_preg'];

          $resp=$rg['respuesta'];

          $punt=$rg['puntos'];

          ?>

          <tr>

           <td width=80% id=texto><? echo $resp; ?></td>

           <td width=20%><input type=radio name="test<? echo $npreg;?>"

                          value="<? echo $idpr."-".$idre."-".$punt;?>"></td>

          </tr>

          <?

         }

         ?>

       </table>

     </td>

     <td width=20%>&nbsp;</td>

    </tr>

   </table>

   <?

 }

 ?>

 <table width=100% border=1 cellspacing=0 cellpadding=2>

  <tr>

   <td width=100% align=center><input type=submit value="Calificar"><input type=hidden name=reg value="<? echo $registros; ?>"></td>

  </tr>

 </table>

 

Variables generadas: test1, test2, test3 ….. testn (donde n es el total de preguntas ($registros)).

 

 

 

Encontre un SCRIPT similar al requerimiento, pero no se como hacerlo funcionar para mi aplicación:

 

<script>

function validar()

{

 for ( var i = 1; i <= registros; i++ )

 {

  if (!validarBotonRadio(i))

  {

    alert("no ha terminado la Evaluación" ) ;

    return false;

  }

 }

 alert("Evaluacion Completa" );

 return true;

}

 

 

function validarBotonRadio(i)

{

   x = document.theForm["test"+i];

   for ( k = 0; k < x.length; k++ )

  {

    if ( x[k].checked )

    {

      alert("OIOIOI")

      return true;

    }

  }

  return false;

}

 

</script>

 

 

Espero darme a entender….. GRACIAS

 




Quizás le interese
De: jbosch(vosk)
Util para: 2 personas

Fecha: 24/11/2006
Mensaje:

creo que el problema no está en tu php sinó en la parte javascript. voy a colgar un codigo que debería ser muy parecido a lo que genera tu php, para tener una base con la que trabajar (otra cosa, creo que olvidas cerrar una etiqueta de inicio de tabla y que olvidas una etiqueta de final de tabla):

<html><head></head><body>
<form name="Califica" method="post" action="califica.php" OnSubmit="return validar(this);">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
 <table width=100% border=0><tr><td colspan=3 id=texto>Pregunta 1</td></tr>
 <tr><td width=20%>&nbsp;</td>
 <td width=60%>
  <table width=100% border=0>
  <tr><td width=80% id=texto>Respuesta 1,0</td>
         <td width=20%><input type=radio name="test1" value="10-10-10"></td></tr>
  <tr><td width=80% id=texto>Respuesta 1,1</td>
         <td width=20%><input type=radio name="test1" value="11-11-11"></td></tr>
  </table>
 </td><td width=20%>&nbsp;</td></tr></table>
 <table width=100% border=0><tr><td colspan=3 id=texto>Pregunta 2</td></tr>
 <tr><td width=20%>&nbsp;</td>
 <td width=60%>
  <table width=100% border=0>
  <tr><td width=80% id=texto>Respuesta 2,0</td>
         <td width=20%><input type=radio name="test2" value="20-20-20"></td></tr>
  <tr><td width=80% id=texto>Respuesta 2,1</td>
         <td width=20%><input type=radio name="test2" value="21-21-21"></td></tr>
  </table>
 </td><td width=20%>&nbsp;</td></tr></table>
<!--esta es la que creo que te dejas--></table>
<table width=100% border=1 cellspacing=0 cellpadding=2><tr>
<td width=100% align=center><input type=submit value="Calificar">
<input type=hidden name=reg value="2"></td></tr></table>
</body></html>

supongamos que hay dos preguntas y dos respuestas para cada pregunta, y que el campo oculto lleva el nº de preguntas, en este caso '2'. aunqué no se adapte o no sea exacto a lo que tu obtienes ya nos sirve de base.

veamos ahora el javascript que valida los radios. la variable 'registros' hace referencia al numero de preguntas, es decir al valor que hay en el campo oculto. lo que hace simplemente es verificar que haya un (al menos un) radio seleccionado de cada grupo de radios para cada respuesta (observa que previamente habías formateado los nombres de los radios para automatizar el proceso de verificacion).

la llamada a la funcion de verificación se hace mediante el evento

onSubmit="return validar(this);"

y se define como

function validar(f) {/**/}

ahora el parámetro 'f' es un puntero al formulario que se va a enviar (ya se que el script que has colgado no lo lleva, pero facilita el trabajo). la funciones de validacion para el codigo anterior (el que supongo que sale de tu php), serán de la forma

function validar(f)
{
var registros=f.reg.value;
for(var q=1;q<=registros;q++)
 {
 if(!VBR(f,q)) {return false;}
 }
return true;
}

function VBR(f,q)
{
var x=f["test"+q].length;
for(var w=0;w<x;w++)
 {
 if(f["test"+q][w].checked) {return true;}
 }
alert("Falta evaluar la pregunta #"+q);
return false;
}

la funcion 'VBR' es 'ValidoBotonRadio'. son funciones iguales a las que colgaste pero con una leve modificacion: la referencia al formulario no se hace por nombre sino por puntero. al iniciar la funcion 'VBR()' la variable 'x' toma la longitud del grupo de radios con el mismo nombre

'f' es el puntero al formulario
'["test"+q]' es el nombre del grupo de radios

luego cada radio se identificará por

f["test"+q][indice]

y se verificará su estado de seleccion mediante el atributo 'checked'. otra cosa importante es definir el valor 'registros', que en este caso toma el valor del campo oculto y en mi codigo vale 2. lo demas no tinene ningun secreto: cuando un radio del grupo esté seleccionado es que la pregunta ya está evaluada, retorna true y sigue con la siguiente.

contrasta lo que tu obtienes de tu php con lo que he colgado, esto debería funcionarte.

jbosch(vosk)





De: alison
Util para: 1 personas

Fecha: 14/08/2009
Mensaje:

tan mula que es para escribir sus investigaciones use el cerebro



Volver al foro | Responder | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.