diff options
author | James Phillpotts <jphillpotts@scottlogic.co.uk> | 2014-04-10 10:29:17 +0100 |
---|---|---|
committer | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-04-12 01:26:03 -0700 |
commit | b07681a16a291a38fdbdfa3065a747ab26f9a6c9 (patch) | |
tree | ffb07c822518e689e619dc1ac8780f10877f7b7f /theme/javascript/core/quiz.js | |
parent | f6595f51119baca04bf91e619f64518d400e5cae (diff) | |
download | gitbook-b07681a16a291a38fdbdfa3065a747ab26f9a6c9.zip gitbook-b07681a16a291a38fdbdfa3065a747ab26f9a6c9.tar.gz gitbook-b07681a16a291a38fdbdfa3065a747ab26f9a6c9.tar.bz2 |
Quiz with GFM checkbox lists
Diffstat (limited to 'theme/javascript/core/quiz.js')
-rw-r--r-- | theme/javascript/core/quiz.js | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/theme/javascript/core/quiz.js b/theme/javascript/core/quiz.js index 2e900e8..7043641 100644 --- a/theme/javascript/core/quiz.js +++ b/theme/javascript/core/quiz.js @@ -6,9 +6,8 @@ define([ ], function($, execute, analytic, state){ // Bind an exercise var prepareExercise = function($exercise) { - var $answers = $exercise.find(".quiz-answers").find("input[type=radio], input[type=checkbox]"); - $answers.click(function(e) { + $exercise.find(".quiz-answers input").click(function(e) { e.preventDefault(); }); @@ -16,19 +15,22 @@ define([ $exercise.find(".action-submit").click(function(e) { e.preventDefault(); analytic.track("exercise.submit"); - $exercise.find("tr.alert-danger").removeClass("alert-danger"); + $exercise.find("tr.alert-danger,li.alert-danger").removeClass("alert-danger"); $exercise.find(".alert-success,.alert-danger").addClass("hidden"); - var result = true; - $exercise.find(".quiz input[type=radio],.quiz input[type=checkbox]").each(function(i) { - var correct = $(this).is(":checked") === $answers.slice(i).first().is(":checked"); - result = result && correct; - if (!correct) { - $(this).closest("tr").addClass("alert-danger"); - } + $exercise.find(".quiz").each(function(q) { + var result = true; + var $answers = $exercise.find(".quiz-answers").slice(q).find("input[type=radio], input[type=checkbox]"); + $(this).find("input[type=radio],input[type=checkbox]").each(function(i) { + var correct = $(this).is(":checked") === $answers.slice(i).first().is(":checked"); + result = result && correct; + if (!correct) { + $(this).closest("tr, li").addClass("alert-danger"); + } + }); + $(this).find(result ? "div.alert-success" : "div.alert-danger").toggleClass("hidden"); }); - $exercise.find(result ? "div.alert-success" : "div.alert-danger").toggleClass("hidden"); }); $exercise.find(".action-solution").click(function(e) { |