2013-05-14 4 views
1

J'essaie de créer une question jquery à plusieurs commentaires J'ai besoin d'un peu d'aide avec mon code if-instruction. J'ai une réponse correcte, mais je voudrais avoir une autre alerte de rétroaction pour sélectionner chaque mauvaise réponse. Je voudrais qu'il donne un feed-back différent pour chaque mauvaise réponse. Par exemple, "Vous avez sélectionné gris, il y a une meilleure réponse, s'il vous plaît sélectionnez à nouveau." ou "vous avez choisi le noir, il y a une meilleure réponse."JQuery Multiple Choice Commentaires multiples Si Déclaration

Voici mon code jusqu'à présent.

http://jsfiddle.net/nhxuy/

Jquery:

$(function() { 
    //variable of correct answers 
    var rules = ['correct']; 

    //force checkboxes to work like radio buttons 
    var boxes = $("input[name=q4]:checkbox").click(function() { 
     boxes.not(this).attr('checked', false); 
    }); 



    $('.submit4').click(function (e) { 
     e.preventDefault(); 
     //check correct answers from var above 
     if ($('input[name=q4]:checked').map(function (i, v) { 
      return v.id; 
     }).get().join(',') == rules[0]) { 
      alert("Correct! Reflective colors should make you more visible at night"); 

     } else { 

      $('.grey:checked').attr('disabled', 'disabled').removeAttr('checked'); 
      alert("grey is wrong... it might not be bright enough."); 
     } 



    }); 
}); 

HTML:

<h1> Question </h1> 

<p>What is the best color to wear after dark?</p> 
<form> 
    <label> 
     <input type="checkbox" name="q4" class="grey"></input>grey</label> 
    <label> 
     <input type="checkbox" name="q4" class="black"></input>black</label> 
    <label> 
     <input type="checkbox" name="q4" class="white"></input>white</label> 
    <label> 
     <input type="checkbox" name="q4" class="red"></input>red</label> 
    <label> 
     <input type="checkbox" name="q4" id="correct"></input>reflective yellow</label> 
    <br /> 
    <button class="submit4">Submit</button> 
</form> 
+0

Alors, quelle est votre question? – nnnnnn

+0

''// forcer les cases à cocher à fonctionner comme des boutons radio' 'pourquoi ne pas utiliser les boutons radio ?! –

+0

C'est purement esthétique ... Pour répondre à toutes les autres questions à choix multiples qui ont des réponses multiples et traitées différemment. – user1941999

Répondre

1

Dans ce cas, je vous suggère d'utiliser un switch, quelque chose comme (simplement mettre votre propre logique):

$('.submit4').click(function (e) { 
    e.preventDefault(); 
    //check correct answers from var above 
    var result; 
    switch($('input[name=q4]:checked').attr('class')){ 
     case 'grey': 
      result = "it's grey"; 
      break; 
     case 'black': 
      result = "it's black"; 
      break; 
     case 'white': 
      result = "it's white"; 
      break; 
     case 'red': 
      result = "it's red"; 
      break; 
     default: 
      result = 'Correct answer!'; 
      break; 
    } 
    alert(result); 

}); 

Dans ce cas, le commutateur fonctionne en obtenant la classe de la case sélectionnée et vous pouvez faire ce que vous voulez sur chaque cas, au lieu d'utiliser un tas de si/elses ...

jsFiddle Démo: http://jsfiddle.net/darkajax/q4rJ8/

+0

Merci darkajax! Cela fonctionne très bien. Beaucoup plus simple et meilleure solution! – user1941999