Ver Mensaje Individual
  #34 (permalink)  
Antiguo 18/09/2010, 09:13
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

aca te arregle, creo que ya anda todo bien.

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. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  3. <title>Ejemplo de encuesta inteligente</title>
  4.  
  5. <style type="text/css">
  6. #cuestionario {
  7.     padding:10px;
  8.     margin:0px;
  9.     list-style:none;
  10. }
  11. #cuestionario dd {
  12.     display:block;
  13.     height:18px;
  14.     text-decoration:none;
  15.     color:#666666 !important;
  16.     padding:1px 5px 1px 5px;
  17.     border:1px solid #ffffff;
  18. }
  19. #cuestionario dd:hover {
  20.     border:1px solid #e53500;
  21.     text-decoration:none;
  22.     cursor:pointer;
  23. }
  24. .activo{
  25.     background:red;
  26.     font-weight:bold;
  27.     color:#fff;
  28. }
  29. .button{ width:100px; border:solid 1px #CCC; text-align:center; display:none; float:left; margin-right:20px;}
  30. .button:hover{ background:#009; color:#FFF; cursor:pointer;}
  31.  
  32. <script src="jquery.js" type="text/javascript"></script>
  33. <script type="text/javascript">
  34. $(document).ready(function() {
  35.     var question = 1;
  36.        
  37.     function loadQuestion(boton,param){//CARGA LA SIGUIENTE PREGUNTA
  38.         if(question == 1){$('#prev').hide();}else{$('#prev').show();}
  39.         var r = (param)?(param.respuestas)?'&r='+param.respuestas:'':'';
  40.         if( (boton == 'Continuar' && !$('#cuestionario dl').hasClass('ultima')) || boton=='Anterior'){
  41.             $('#cuestionario').html('').load('preguntas.php?q='+(question)+r,function(){
  42.                 (param)?(param.callback)?param.callback():null:null;
  43.                 if ($('#cuestionario dl').hasClass('ultima')){ //Si detecta que es la ultima pregunta, muestra el boton finalizar en lugar de continuar
  44.                     $('#next.button').text('Finalizar');
  45.                 }else if($('#next.button').text() == 'Finalizar'){
  46.                     $('#next.button').text('Continuar')
  47.                 }
  48.             });
  49.         }else if(boton == 'Finalizar'){
  50.             //terminas la encuesta
  51.             alert('La encuesta termino')
  52.         }
  53.     }
  54.    
  55.     function getRespuestas(){
  56.         var respuestas = '';
  57.         $('.activo').each(function(i){//OBTENEMOS LAS RESPUESTAS SELECCIONADAS
  58.             respuestas += $(this).attr('id').split('-')[1];
  59.             if(i!= ($('.activo').length-1))
  60.                 respuestas+=',';
  61.         });
  62.         return respuestas;
  63.     }
  64.    
  65.     function seleccionarRespuestas(){
  66.         var pregunta = getPregunta();
  67.         var val =$('#answers').val();
  68.        
  69.         var respuestas = getRespuestas();
  70.        
  71.         if(val.indexOf('R['+pregunta+']') != -1){//SI YA SE HAN SELECCIONADO RESPUESTAS PREVIAMENTE PARA ESA PREGUNTA
  72.             var p = val.split('|')[parseInt(pregunta)-1];
  73.             var p2 = p.split(':')[0]+':'+respuestas;
  74.             val = val.replace(p,p2);
  75.         }else{
  76.             val = (val == '')?'':val+'|';
  77.             val += 'R['+pregunta+']:'+respuestas;
  78.         }
  79.         return {val:val,respuestas:respuestas};
  80.     }
  81.    
  82.     function marcarElegidas(){
  83.         var respuestas = ($('#answers').val().split('|').length == 1)?'':($('#answers').val().split('|')[parseInt(getPregunta())-1])?$('#answers').val().split('|')[parseInt(getPregunta())-1].split(':')[1].split(','):'';//OBTENEMOS LAS RESPUESTAS SELECCIONADAS DE LA PREGUNTA
  84.         for(var i=0;i<respuestas.length;i++){
  85.             $('#r-'+respuestas[i]).addClass('activo');
  86.         }
  87.     }
  88.  
  89.     $('a.empezar_quiz').click(function() {
  90.         loadQuestion('Continuar')
  91.         $(this).hide();
  92.         $('#next').show();     
  93.     });
  94.    
  95.     $('#next').click(function(){
  96.         if(getN() == $('.activo').length){     
  97.             var r =     seleccionarRespuestas();
  98.             $('#answers').val(r.val);
  99.             question++;
  100.             loadQuestion($(this).text(),{respuestas:r.respuestas,callback:marcarElegidas});
  101.         }else{
  102.             var n = getN();
  103.             var text = (n > 1)?' preguntas':' pregunta';
  104.             alert('Debe seleccionar '+getN()+text);
  105.         }
  106.     });
  107.    
  108.     $('#prev').click(function(){
  109.         if(getPregunta() != 1){
  110.             if(getN() == $('.activo').length){             
  111.                 var r =     seleccionarRespuestas();
  112.                 $('#answers').val(r.val);
  113.                 question--;
  114.                 loadQuestion($(this).text(),{respuestas:r.respuestas,callback:marcarElegidas});            
  115.             }else{
  116.                 var n = getN();
  117.                 var text = (n > 1)?' preguntas':' pregunta';
  118.                 alert('Debe seleccionar '+getN()+text);
  119.             }
  120.         }else if(getPregunta() == 1){
  121.             alert('Ya se encuentra en la primera pregunta.')
  122.         }
  123.     });
  124.        
  125.     function getN(){
  126.         return $("#cuestionario dl").attr('class').split('n')[1].split(']')[0].split('[')[1];
  127.     }
  128.    
  129.     function getPregunta(){
  130.         return $("#cuestionario dl").attr('id').split('-')[1];
  131.     }
  132.    
  133.     $("#cuestionario dl dd").live('click', function () {
  134.         if($(this).hasClass('activo') || $('.activo').length < getN()){
  135.             $(this).toggleClass('activo');
  136.         }
  137.    });
  138. });
  139.  
  140. </head>
  141. <a class="empezar_quiz" href="#"> Empezar con las preguntas</a>
  142.  
  143. <!-- Carga las preguntas y respuestas -->
  144. <div id="cuestionario"></div>
  145.  
  146. <!-- Aqui se guardaran las respuestas -->
  147. <input id="answers" name="answers" type="hidden" value="" />
  148.  
  149. <div id="prev" class="button">Anterior</div>
  150. <div id="next" class="button">Continuar</div>
  151.  
  152. <!-- DEBUG: muestra las respuestas seleccionadas -->
  153. <span id="debug"></span>
  154.  
  155. </body>
  156. </html>

el php es el mismo que me pasaste en el ultimo post
__________________
Extension Google Chrome
dar las gracias no cuesta nada :D