Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/09/2010, 11:23
Avatar de tredio
tredio
 
Fecha de Ingreso: noviembre-2008
Ubicación: Carabobo
Mensajes: 466
Antigüedad: 16 años
Puntos: 66
Respuesta: Cómo crear una encuesta/quiz inteligente con jquery

creo que no has entendido del todo el script que te pase, te explico para que veas.
te coloco los comentarios.

Cita:
Iniciado por tredio Ver Mensaje

HTML
Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/v1.98/DTD/v1.98-strict.dtd">
  2. <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <title>Ejemplo de encuesta inteligente</title>
  5.  
  6. <style type="text/css">
  7. #cuestionario {
  8.     padding:10px;
  9.     margin:0px;
  10.     list-style:none;
  11. }
  12. #cuestionario dd {
  13.     display:block;
  14.     height:18px;
  15.     text-decoration:none;
  16.     color:#666666 !important;
  17.     padding:1px 5px 1px 5px;
  18.     border:1px solid #ffffff;
  19. }
  20. #cuestionario dd:hover {
  21.     border:1px solid #e53500;
  22.     text-decoration:none;
  23.     cursor:pointer;
  24. }
  25. .activo{
  26.     background:red;
  27.     font-weight:bold;
  28.     color:#fff;
  29. }
  30. #next{ width:100px; border:solid 1px #CCC; text-align:center; display:none;}
  31. #next:hover{ background:#009; color:#FFF; cursor:pointer;}
  32.  
  33. <script src="jquery.js" type="text/javascript"></script>
  34. <script type="text/javascript">
  35. $(document).ready(function() {
  36.     var question = 0;//VARIABLE QUE NOS INDICA POR QUE PREGUNTA VAMOS
  37.    
  38.     function loadQuestion(){//CARGA LA SIGUIENTE PREGUNTA
  39.         $('#cuestionario').html('').load('preguntas.php?q='+(++question));
  40.     }
  41.  
  42.     $('a.empezar_quiz').click(function() {//EMPEZAR EL QUIZ
  43.         loadQuestion();//CARGAMOS PREGUNTAS
  44.         $(this).hide();//OCULTAMOS LINK
  45.         $('#next').show();//MOSTRAMOS BOTON CONTINUAR
  46.     });
  47.    
  48.     $('#next').click(function(){//ACCION DEL BOTON CONTINUAR
  49.         if(getN() == $('.activo').length){//SI SE HAN SELECCIONADO LAS RESPUESTAS NECESARIAS
  50.             var val = $('#answers').val();
  51.             val = (val != '')?val+'|':val;
  52.            
  53.             var respuestas = '';
  54.             $('.activo').each(function(i){
  55.                 respuestas += $(this).attr('id').split('-')[1];
  56.                 if(i!= ($('.activo').length-1))
  57.                     respuestas+=',';
  58.             });
  59.            
  60.             val += getPregunta()+':'+respuestas;
  61.             $('#answers').val(val);
  62.             loadQuestion();
  63.         }else{//SI NO ENVIAMOS UN MENSAJE DE ALERTA
  64.             var n = getN();
  65.             var text = (n > 1)?' preguntas':' pregunta';
  66.             alert('Debe seleccionar '+getN()+text);
  67.         }
  68.     });
  69.        
  70.     function getN(){//OBTENER EL NUMERO DE RESPUESTAS QUE SE PUEDEN SELECCIONAR
  71.         return $("#cuestionario dl").attr('class').split('n')[1].split(']')[0].split('[')[1];
  72.     }
  73.    
  74.     function getPregunta(){//OBTENER EL NUMERO DE LA PREGUNTA ACTUAL
  75.         return $("#cuestionario dl").attr('id').split('-')[1];
  76.     }
  77.    
  78.     $("#cuestionario dl dd").live('click', function () {//ACCION DE LAS RESPUESTAS
  79.         if($(this).hasClass('activo') || $('.activo').length < getN()){
  80.             $(this).toggleClass('activo');
  81.         }
  82.    });
  83. });
  84.  
  85. </head>
  86. <a class="empezar_quiz" href="#"> Empezar con las preguntas</a>
  87.  
  88. <!-- Carga las preguntas y respuestas -->
  89. <div id="cuestionario"></div>
  90.  
  91. <!-- Aqui se guardaran las respuestas -->
  92. <input id="answers" name="answers" type="hidden" value="" />
  93.  
  94. <div id="next">Continuar</div>
  95.  
  96. <!-- DEBUG: muestra las respuestas seleccionadas -->
  97. <span id="debug"></span>
  98.  
  99. </body>
  100. </html>
por que digo que no entendiste del todo el script?, bueno por que si te fijas en el input answers, que es del tipo hidden, se guardan todas las respuestas que fueron elegidas por cada pregunta, y se guardan en este formato.

1:2,3,5|2:3 //ESTO ES POR PONER UN EJEMPLO

cada pregunta esta separada por "|", el numero de la pregunta es el que esta antes del ":" y las respuestas del usuario estan despues del ":", separadas por comas si es que hay mas de una.

si quieres saber que respuesta eligio el usuario, solo tienes que jugar con ese campo y sacar los valores que necesites.