Answer validation and no skipping questions (for Quiz)

Answer validation and no skipping questions (for Quiz)

I'm building a quiz and there are two functions I can't seem to work into the mostly complete code. I followed several tutorials and forums to put this together, and cant seem to work in what I need. If someone could point me in right direction?

What it does now:
1. Allows questions to be skipped
2. Checks answers after the last question, and displays the question and correct answer at the end.

What I'd like it to do:
1. Cannot proceed to next question without a selection (cannot leave radio empty)
2. Check if correct answer before moving to next question, if incorrect then display questions[j].w
3. Click next again to move to next question

HTML: 
  1. <div id="wrapper">
  2.       <div id="main">
  3.         <h1>Quiz</h1>
  4.         <p>Test your knowledge.</p>
  5.         <button type="button" class="begin" value="begin">begin</button>
  6.       </div>
  7.       
  8.       <div id="questions"></div>
  9. </div>
JS:

  1. $(document).ready(function() {
  2.   $(".begin").click(function(){
  3.     $("#main").hide();
  4.     return quiz();
  5. });

  6. function startOver() {
  7.  location.reload(true);
  8. }

  9. function quiz() {
  10.   var score = [];
  11.   var questions = [{
  12.     q: "1 + 1",
  13.     s: ["1", 
  14.         "2", 
  15.         "3"],
  16.     a: "2",
  17.     w: "Incorrect",
  18.     correct: 0

  19. }, {
  20.     q: "2 + 1",
  21.     s: ["1", 
  22.         "2", 
  23.         "3"],
  24.     a: "3",
  25.     w: "Incorrect",
  26.     correct: 0

  27. }, {
  28.     q: "3 + 1",
  29.     s: ["1", 
  30.         "2", 
  31.         "3"],
  32.     a: "4",
  33.     w: "Incorrect",
  34.     correct: 0
  35. }];
  36.     
  37.     var counter = questions.length;
  38.     
  39. function renderQuestion(questions) {
  40.     for (var i = 0; i < questions.length; i++) {
  41.         $("#questions").append(
  42.           '<form id="'+i+'">' +
  43.           '<p class="page">Question ' + (i + 1) + ' of ' + questions.length + '</p>' +
  44.           '<hr class="row">' +
  45.           '<h3 class="question">' + questions[i].q + '</h3>' + 
  46.           radioButtons(questions[i].s, i) + 
  47.           '<hr class="row">' +
  48.           '<span class="nav">' +
  49.           '<button type="button" class="reset" value="reset">start over</button>' +
  50.           '<button type="submit" class="next">next</button>' +
  51.           '</span></form>');
  52.       }
  53.     for (var k = questions.length - 1; k > 0; k--) {
  54.       $('#' + k).hide();
  55.       }
  56.       
  57.     $('.reset').click(startOver);
  58.     }
  59.     
  60. function radioButtons(ary, qNum) {
  61.     var answers = [];
  62.     for (i = 0; i < ary.length; i++) {
  63.         answers.push(
  64.           '<div class="choices">' +
  65.           '<input type="radio" name="'+qNum+'" value="' + ary[i] + '" id="'+qNum+'">' +
  66.           '<label for="'+qNum+'">' +ary[i]+ '</label>' +
  67.           '</div>');
  68.       }
  69.     return answers.join("");
  70.     }
  71.     
  72. function sumCorrect(questions) {
  73.     return score.reduce(function (previousValue, currentValue, index, array) {
  74.     return previousValue + currentValue;
  75.       });
  76.     }

  77. function checkAnswer(answer, qNum, questions) {
  78.     if (answer == questions[qNum].a) {
  79.       questions[qNum].correct = 1;
  80.       score.push(questions[qNum].correct);
  81.       
  82.     } else {
  83.       score.push(questions[qNum].correct);
  84.     }
  85. }

  86.     
  87.     renderQuestion(questions);
  88.     
  89.     $(".next").click(function (event) {
  90.       event.preventDefault();
  91.     var qNum = $(this).closest("form").attr("id");
  92.     
  93.     var userInput = $('input[name='+qNum+']:radio:checked').val();
  94.     if (counter > 1) {
  95.       checkAnswer(userInput, qNum, questions);
  96.       $("#" + qNum).hide();
  97.       $("#" + qNum).next().show();
  98.       counter--;
  99.     } else if (counter == 1) {
  100.       checkAnswer(userInput, qNum, questions);
  101.       $("#questions").find("form").remove();
  102.       $("#questions").append(
  103.       '<p class="page result"></p>' +
  104.       '<hr class="row">' +
  105.       '<div class="nav nextLast">' +
  106.       '<button type="button" class="reset" value="reset">start over</button>' +
  107.       '</div>');
  108.       $(".result").text('You answered ' + sumCorrect(questions) + ' questions correctly out of 3.');
  109.         for (j = 0; j < score.length; j++) {
  110.           if (score[j] === 0) {
  111.             console.log(questions[j].q, questions[j].a);
  112.       $("#questions").append('<div>' + 
  113.       '<h3 class="question">' + questions[j].q + '</h3>' +
  114.       '<p>' + questions[j].a + '</p>' +
  115.       '</div>');
  116.             }
  117.       $('.reset').click(startOver);
  118.         }
  119.       } else {
  120.         return false;
  121.       }
  122.     });
  123.   }
  124. });