Ver Mensaje Individual
  #15 (permalink)  
Antiguo 07/09/2010, 16:35
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 9 meses
Puntos: 20
Respuesta: Cómo crear una encuesta/quiz inteligente con jquery

Cita:
Iniciado por tredio Ver Mensaje
bueno lo de borrar el boton en la primera pregunta no me parece dificil pienso que lo puedes hacer tu sin mucho problema, lo de marcar las preguntas al continuar o volver lo hice aproposito, no se me parecio mejor asi, pero tambien lo puedes cambiar como mas te guste. Lo del error se soluciona cambiando esta funcion

Código Javascript:
Ver original
  1. function marcarElegidas(){
  2.         var respuestas = ($('#answers').val().split('|').length == 1)?'':$('#answers').val().split('|')[parseInt(getPregunta())-1].split(':')[1].split(',');//OBTENEMOS LAS RESPUESTAS SELECCIONADAS DE LA PREGUNTA
  3.         for(var i=0;i<respuestas.length;i++){
  4.             $('#r-'+respuestas[i]).addClass('activo');
  5.         }
  6.     }
He intentado cambiar la funcionalidad del boton atras, y no sé porque cuando el id de la pregunta no es 1, no me muestra el boton atras.

He cambiado el css para diferenciar boton de otro, aunque ambos tienen las mismas propiedades

#next.button,#prev.button{ width:100px; border:solid 1px #CCC; text-align:center; display:none; float:left; margin-right:20px;}
#next.button:hover,#prev.button:hover{ background:#009; color:#FFF; cursor:pointer;}

Y he modificado las dos funciones 3 funciones (tienen un comentario las lineas que he modificado)

Código Javascript:
Ver original
  1. $('a.empezar_quiz').click(function() {
  2.         loadQuestion()
  3.         $(this).hide();
  4.         $('#next.button').show(); // muestro del boton continuar      
  5.     });
  6.    
  7.     $('#next').click(function(){
  8.         if(getN() == $('.activo').length){      
  9.             var r =     seleccionarRespuestas();
  10.             $('#answers').val(r.val);
  11.             question++;
  12.             loadQuestion({respuestas:r.respuestas,callback:marcarElegidas});    
  13.         }else{
  14.             var n = getN();
  15.             var text = (n > 1)?' preguntas':' pregunta';
  16.             alert('Debe seleccionar '+getN()+text);
  17.         }
  18.         if(getPregunta() != 1){ // si no estamos en la primera pregunta muestro el boton
  19.             $('#prev.button').show();
  20.         }
  21.     });
  22.    
  23.     $('#prev').click(function(){
  24.         if(getPregunta() != 1){
  25.             if(getN() == $('.activo').length){              
  26.                 var r = seleccionarRespuestas();
  27.                 $('#answers').val(r.val);
  28.                 question--;
  29.                 loadQuestion({respuestas:r.respuestas,callback:marcarElegidas});                
  30.             }else{
  31.                 var n = getN();
  32.                 var text = (n > 1)?' preguntas':' pregunta';
  33.                 alert('Debe seleccionar '+getN()+text);
  34.             }
  35.         }else if(getPregunta() == 1){
  36.             //alert('Ya se encuentra en la primera pregunta.')
  37.             $('#prev.button').hide(); // si estoy en la primera pregunta oculto el boton
  38.         }
  39.     });

Puedes verlo en la web http://neodani.com/fdw/jquery/quiz/

También he implementado la corrección, pero ha salido otro error de depuración en esta linea

$("#cuestionario dl").attr("id") is undefined
[Break on this error] return $("#cuestionario dl").attr('id').split('-')[1];
linea 124


Gracias de antemano :)