Функция OnSubmit не работает для ввода type='submit'

Я делаю приложение для викторины, используя django, и это моя первая работа с использованием django. Все остальное работает хорошо, за исключением одной вещи - когда я нажимаю на кнопку отправки ответа, страница просто перезагружается.

Вот мой html-код:

<section>
    <div id = "results"></div>
        <form name = "quizForm" onsubmit = "return submitAnswers(answers = [{% for q in questions%}'{{ q.answer }}',{% endfor %}])">
                {% for q in questions %}
                    <h3> {{ q.id }}.  {{ q.question }}</h3>
                    ..........
                {% endfor %}
                <input type = "submit" value = "Submit Answer">
            </form>
            <br><br>
        </section>

Вот js код, относящийся к кнопке:

function submitAnswers(answers) {

    var total = answers.length;
    var score = 0;
    var choice = []

    //dynamic method to get selected option
    for (var i = 1; i <= total; i++) {
        choice[i] = document.forms["quizForm"]["q" + i].value;
    }

    //dynamic method 1 for checking answer
    for (i = 1; i <= total; i++) {
        if (choice[i] == answers[i - 1]) {
            score++;
        }
    }

    //Display Result
    var results = document.getElementById('results');
    results.innerHTML = "<h3>You scored <span>" + score + "</span> out of <span>" + total + "</span></h3>"
    alert("You scored " + score + " out of " + total);

    return false;
}

Согласно этому скрипту я должен видеть оповещение каждый раз, когда я нажимаю кнопку отправки, но страница просто перезагружается, не показывая никаких оповещений. Я новичок в работе с приложениями django, если я что-то упускаю, пожалуйста, подскажите. Спасибо!

что такое {{ q.id }}. {{ q.question }}? Я считаю, что это синтаксическая ошибка

Я думаю, что вам нужно удалить действие на форме, так как форма необходима для отправки обратно на сервер. И добавить событие к input. Также не хватает div. Я не знаю, что делает предварительная обработка, поэтому я просто скопировал его. Что-то вроде

<section>
    <div id = "results"></div>
        <form name = "quizForm">
                {% for q in questions %}
                    <h3> {{ q.id }}.  {{ q.question }}</h3>
                    ..........
                {% endfor %}
                <input type = "button" value = "Submit Answer"
                 oninput = "return submitAnswers(answers = [{% for q in questions%}'{{ q.answer }}',{% endfor %}])">
        </form>
        <br><br>
   </div>
</section>
...

если вы устанавливаете

<input type='sumit'>

он отправит форму и перезагрузит страницу, вам следует установить значение

<input type='button'>

и обработать вызов ajax.

Вернуться на верх