(function($){ $.fn.extend({ jQuizler: function(questions) { // @todo избавиться от возможности двойного клика по кнопкам "cследующий", "предыдущий", "результат" // @todo добавить возможность выбора нескольких вариантов ответа // @todo добавить возможность внедрения названия теста на страницу результатов // @todo избавиться от зависимости Bootsrap CSS // @todo поработать над стилем элементов кнопок и прогресса // @todo добавить кнопки "поделиться" или "like" для разных соц сетей ("ВКонтакте", "Однолкассники", ...) // @todo разобраться с проблемой клика по элементу кнопки на странице результатов // @todo переписать код, сделать его более изящным и чистым // @todo сделать так, чтобы плагин можно было применять для 2х и более тестов на страницу // @todo создать online инструмент для формирования и редактирования вопросов if (questions == null) throw 'No questions was provided.'; var reviewQuiz = false; var percentage = 0; var percentPiece = 100 / questions.length; var rightAnswers = 0; $(this).html("
Молодец!!! Вы настоящий юрист! Поздравляем!
"; } if(colErr <= 1 || colErr >= 4){ rezTest="Так держать!!! Вы хорошо владеете знаниями права, продолжайте изучение и достигните совершенства.
"; } if(colErr > 4){ rezTest="Подтянитесь!!! Ваме нужно совершенствовать знание своих прав, следует внимательно изучить Конституцию России.
"; } resultHTML += rezTest+""; resultHTML += buttonsHTML; resultHTML += ""; div.animate({ opacity : '0' }, 500, function(e){ div.css('display', 'none'); div.find(".notice").css('display', 'none'); $(".results").append(resultHTML); $(".results").css("opacity", "0"); $(".results").css("display", "block"); $(".results").animate({ opacity : '1' }, 500, function(e){ }); }); $(".progress").animate({ opacity : '0' }, 100, function(e){}); reviewQuiz = true; } else { $(".results").animate({ opacity: "1", display: "block" }, 100, function(e){}); div.animate({ opacity : '0' }, 500, function(e){ div.css('display', 'none'); div.find(".notice").css('display', 'none'); $(".results").append(resultHTML); $(".results").css("opacity", "0"); $(".results").css("display", "block"); $(".results").animate({ opacity : '1' }, 500, function(e){ }); }); $(".progress").animate({ opacity : '0' }, 100, function(e){}); } return false; }); $(".next").click(function(e){ var div = $(e.target).closest("div[id*='question-']"); var userAnswer = div.find("li.btn-info"); if (userAnswer.index() == -1 && !reviewQuiz) { var notice = div.find(".notice"); notice.css('opacity', '0'); notice.animate({ opacity: 1 }, 500, function(){}); div.find(".notice").css('display', 'block'); } else { var nextId = parseInt(div.attr('id').replace('question-', '')) + 1; //console.log(nextId); var newQuestion = $("#question-" + nextId); div.animate({ opacity : '0' }, 500, function(e){ div.css('display', 'none'); div.find(".notice").css('display', 'none'); newQuestion.css({opacity : '0', height : '0px'}); newQuestion.animate({ opacity : '1', height : '100%' }, 500, function(e){}); newQuestion.css('display', 'block'); }); percentage += percentPiece; $(".progress div").css("width", percentage + "%"); } return false; }); $(".prev").click(function(e){ var div = $(e.target).closest("div[id*='question-']"); var prevId = parseInt(div.attr('id').replace('question-', '')) - 1; var newQuestion = $("#question-" + prevId); div.animate({ opacity : '0' }, 500, function(e){ div.css('display', 'none'); //div.find(".notice").css('display', 'none'); newQuestion.css({opacity : '0', height : '0px'}); newQuestion.animate({ opacity : '1', height : '100%' }, 500, function(e){}); newQuestion.css('display', 'block'); }); percentage -= percentPiece; $(".progress div").css("width", percentage + "%"); return false; }); $(".results").click(function(e){ $(".results").animate({opacity: 0}, 500, function(e){ $(".results").css("display", "none"); var question = $("#question-1"); question.css({opacity : '0', height : '0px'}); question.animate({ opacity : '1', height : '100%' }, 500, function(e){}); question.css('display', 'block'); $(".progress div").css("width", "0"); $(".progress div").css("display", "block"); $(".progress").animate({ opacity : '1' }, 300, function(e){ percentage = 0; percentage += percentPiece; $(".progress div").css("width", percentage + "%"); }); }); }); }); } }); })(jQuery);