User Tag List

Resultados 1 al 8 de 8

Tema: Haciendo un cuestionario con jquery y json

  1. #1

    Fecha de ingreso
    Jun 2006
    Mensajes
    4,574
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,259
    Agradecer Thanks Received 
    700
    Thanked in
    Agradecido 427 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6

    Haciendo un cuestionario con jquery y json

    Hola. Para practicar un poco jquery y json, me he propuesto un pequeño ejercicio que consiste en lo siguiente:

    En esta web hay una aplicación java (supongo que un applet) http://www.javaranch.com/game/game2.jsp que simula un cuestionario de 12 preguntas sobre el lenguaje java. Me he propuesto rehacerlo en jquery para que se pueda visualizar en dispositivos android. Casi lo tengo acabado, pero me falta un pequeño detale que no sé cómo solucionar.

    Me gustaría que, si pulsas el botón de "responder" sin haber elegido ninguna opción de respuesta, no pasara nada (para así forzar al usuario a elegir una pregunta), pero no lo he conseguido.

    El código donde intento controlar que hayas elegido una respuesta es este:

    $("#done").click( function() {
    var respEscogida = unescape($("input[name='answers']:checked").val());

    if (respEscogida !== undefined) {
    if (respEscogida == arrayPreguntas[0]['correctAnswer']) {
    numAcertadas++;
    arrayPreguntas.shift(); //eliminamos la pregunta del array
    mostrarPregunta();
    }
    else {
    //mostrar respuesta correcta y explicacion
    $('#correctAnswer').html("Answer: " + arrayPreguntas[0]['correctAnswer']);
    $('#explanation').html(arrayPreguntas[0]['explanation']);
    $("#done").hide();
    $("#next").show();
    }
    }
    })

    He probado con != también con !== y he probado a poner undefined en mayúsculas, entre comillas simples, dobles, etc, a probar con "null" en lugar de "undefined", pero nada de nada. Si no escojo ninguna respuesta, se me dispara el mismo código que si hubiese respondido mal la pregunta y lo que quiero es que sencillamente no haga nada.

    He probado a printar el valor de "respEscogida" si no eliges ninguna opción y también he probado con el operador typeof, y precisamente su valor es "undefined". Cómo puedo comprobar si esa variable está vacía?

    Gracias.

    Por cierto, acabo de descubrir que no funciona en chrome, no me carga las preguntas :s
    Última edición por akualung; 14/11/2012 a las 23:29 Razón: edito para poner la url donde está el cuestionario original que estoy copiando.
    _
    .▲ ALABADO SEA EL TRI-FORCEPS!

    Nunca me he considerado de clase media. Soy más bien de clase calcetín roñoso.

  2. #2

    Fecha de ingreso
    Jan 2004
    Ubicación
    USSC Discovery One
    Mensajes
    1,264
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    16
    Agradecer Thanks Received 
    9
    Thanked in
    Agradecido 5 veces en [ARG:2 UNDEFINED] posts
    En principio con

    if (typeof respEscogida !== 'undefined')

    debería ser suficiente, pero sin ver el html de la página no lo sé seguro.

  3. #3

    Fecha de ingreso
    Jun 2006
    Mensajes
    4,574
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,259
    Agradecer Thanks Received 
    700
    Thanked in
    Agradecido 427 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Creo que ya lo he arreglado, pero lo he tenido que hacer de una manera bastante "marciana". He invertido la condición del undefined. En vez de mirar si respEscogida es distinto de undefined, miro si es igual (con el triple igual) y, si lo es, devuelvo false y, si no lo es, pues entonces hago todo lo demás.

    Ahora el problema siguien siendo lo del chrome, no se qué le debe pasar. Quizá la función getJson de jquery no es compatible o algo así. Tengo la última versión de Chrome, según parece.

    Por cierto, ahora lo subo para que se pueda ver todo entero.

    Dicho y hecho, aquí está, http://carlosfernandez.260mb.org/jav.../javaranch.htm

    Por cierto, acabo de comprobar que, si pongo esa url en el chrome, también me funciona. Es solo cuando la veo de forma local que no me funciona en el chrome. Es pa volverse loco XDD
    Última edición por akualung; 14/11/2012 a las 23:22
    _
    .▲ ALABADO SEA EL TRI-FORCEPS!

    Nunca me he considerado de clase media. Soy más bien de clase calcetín roñoso.

  4. #4

    Fecha de ingreso
    Oct 2003
    Mensajes
    17,905
    Mencionado
    42 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    214
    Agradecer Thanks Received 
    160
    Thanked in
    Agradecido 109 veces en [ARG:2 UNDEFINED] posts
    !==

    Deberia de ser !=

    Es mas, si defines primero la variable como undefined y luego la usas, te aseguras que va a tener ese valor.

  5. #5

    Fecha de ingreso
    Jun 2006
    Mensajes
    4,574
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,259
    Agradecer Thanks Received 
    700
    Thanked in
    Agradecido 427 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Cita Iniciado por otto_xd Ver mensaje
    !==

    Deberia de ser !=

    Es mas, si defines primero la variable como undefined y luego la usas, te aseguras que va a tener ese valor.
    Ah. Yo es que eso del !== lo ví en una respuesta que le daban a un tío por internet y pensé que, igual que hay un === también habría un !==. De todas maneras, invirtiendo la condición ya me ha funcionado, o sea que, aunque quede feo, mejor lo dejo así. Chapuza coding FTW xDDD

    Gracias por la ayuda
    _
    .▲ ALABADO SEA EL TRI-FORCEPS!

    Nunca me he considerado de clase media. Soy más bien de clase calcetín roñoso.

  6. #6

    Fecha de ingreso
    Oct 2003
    Mensajes
    17,905
    Mencionado
    42 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    214
    Agradecer Thanks Received 
    160
    Thanked in
    Agradecido 109 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por akualung Ver mensaje
    Ah. Yo es que eso del !== lo ví en una respuesta que le daban a un tío por internet y pensé que, igual que hay un === también habría un !==. De todas maneras, invirtiendo la condición ya me ha funcionado, o sea que, aunque quede feo, mejor lo dejo así. Chapuza coding FTW xDDD

    Gracias por la ayuda
    Pues mira, no conocia que js tenia comparadores de 3 operandos.

    Prueba de todas formas con !=, ya que !== comprueba valor y tipo de objeto

  7. #7

    Fecha de ingreso
    Jun 2006
    Mensajes
    4,574
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,259
    Agradecer Thanks Received 
    700
    Thanked in
    Agradecido 427 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Cita Iniciado por otto_xd Ver mensaje
    Pues mira, no conocia que js tenia comparadores de 3 operandos.

    Prueba de todas formas con !=, ya que !== comprueba valor y tipo de objeto
    Bueno, yo tengo entendido que php los tiene y, tal como dije antes, vi a un tío en un ejemplo que puso en un foro así que supongo que, o a ese tío se le "escapó" eso por estar más acostumbrado al php, o realmente existen en javascript. La verdad es que la consola de errores del firefox no se me ha quejado ni con el === ni con el !== (salvo que se me haya pasado comprobar si había algun warning) así que para mí que también lo han implementado en javascript.
    _
    .▲ ALABADO SEA EL TRI-FORCEPS!

    Nunca me he considerado de clase media. Soy más bien de clase calcetín roñoso.

  8. #8

    Fecha de ingreso
    Sep 2006
    Ubicación
    Zaragoza
    Mensajes
    1,243
    Mencionado
    5 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,546
    Agradecer Thanks Received 
    139
    Thanked in
    Agradecido 110 veces en [ARG:2 UNDEFINED] posts
    Javascript hace mucho que implementó esos operadores.

    Si queréis saber más miraros esto

    http://www.ecmascript.org/

    Y otra fuente muy buena es

    https://developer.mozilla.org/es/docs/JavaScript

    -----Actualizado-----

    De todas formas te sugiero que hagas un pequeño cambio para evitar comparar con "undefined" .

    Código:
    $("#done").click( function() {
    if ( $("input[name='answers']:checked").length != 0 ) {
            var respEscogida = unescape($("input[name='answers']:checked").val());
    if (respEscogida == arrayPreguntas[0]['correctAnswer']) {
    numAcertadas++;
    arrayPreguntas.shift(); //eliminamos la pregunta del array
    mostrarPregunta();
    } else {
    //mostrar respuesta correcta y explicacion
    $('#correctAnswer').html("Answer: " + arrayPreguntas[0]['correctAnswer']);
    $('#explanation').html(arrayPreguntas[0]['explanation']);
    $("#done").hide();
    $("#next").show();
    }
    } })
    Última edición por romeroca; 15/11/2012 a las 17:26
    "256K son suficientes para cualquier tarea" Bill Gates

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •