Проблема заключается в поведении по умолчанию события формы submit
. Убедитесь, что вы всегда возвращаете false из обработчика отправки, а также убедитесь, что вы предотвращаете поведение события по умолчанию.
Одна возможность:
<form onsubmit="event.preventDefault(); some_callback_calling_answerCheck();">
Кроме того, не называйте себя answerCheck
рекурсивно (внутри else) он превратится из go в бесконечное l oop. И не регистрируйте новый обработчик submit
при каждом вызове.
Вы хотите запускать answerCheck только тогда, когда 1) пользователь нажимает кнопку отправки (кнопка, клавиша ввода, ...) или 2) что-то изменено в поле ввода. Внутри него просто проверьте ответ и обновите вопрос.
Обновление: вот способ сделать это (базовая структура c и не тестировалась, вам нужно понять это и улучшить).
// wait for document ready event (jQuery)
$(function(){
// questions and answers, in order
const qanda = [
{"q": "Give the definition of a real function", "a": "A real function is a relation from ℝ to ℝ where every real number has a maximum of one image."},
{"q": "...", "a": "..."}
];
let currentIndex = 0; // current question displayed, index in the list
// html elements: get them once and store them in variables
// for performance reasons
const $question = $('p.question'); // where you display your question
const $input = $('form input'); // your input for the answer
const $rightwrong = $('.rightWrong'); // feedback
// register on submit event
$('.form1').submit(function(e){
e.preventDefault(); // do not reload the page !
let answer = $input.val(); // get the user's answer
if(answer == qanda[currentIndex].a){
// wright answer, move on:
$rightWrong.text("good job");
currentIndex += 1; // here, you would need to ensure you are not past the last question
$question.text(qanda[currentIndex].q); // display next
}else{
// wrong answer
$rightWrong.text("Wrong! Try again and check your answer for mistakes " + answer);
}
return false; // do not reload the page !
});
// finally, setup the first question
$question.text(qanda[currentIndex].q);
});
В вашем HTML, у вас должно быть как минимум:
- форма
form1
с одним вводом для ответа и кнопкой отправки (для активации события отправки) <p class="question"></p>
для отображения вопрос - а
<p class="rightWrong"></p>
по отзывам