Tarun Rathore Ответов: 1

Как получить правильный балл в викторине, нажав клавишу enter ?


Я работаю над проектом викторины, который не является множественным выбором. Пользователь должен каждый раз вводить ответ в поле ввода. Проблема, с которой я сталкиваюсь, заключается в том, что я получаю правильный балл, если нажимаю на кнопку отправки каждый раз, но не получаю правильный балл, если нажимаю enter, чтобы отправить ответ.

Что я уже пробовал:

<!DOCTYPE html>

<html>
<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Unlimited grammar practice exercises of 
    each & every topic to get a good commmand of English language">
    <link rel="stylesheet" type="text/css" href="random.css">
    <script type="text/javascript" src="jquery.js"> </script>
    <script type="text/javascript" src="random.js"> </script>

    <title> English Grammar Exercises </title>

</head>

<title> Grammar Quiz </title>

<body>

    <div class="start">
        <h1> Welcome to English Pupils </h1>
        <a class="btn" href="#"> Get Started </a>
    </div>

    <div class="quiz">

        <input type="text" class="input" />
        <input type="text" class="output" />
        <a class="sub" href="#" onclick="checkAnswer()"> Submit </a>

    </div>

    <div class="summary">
        <h2> Summary Screen </h2>
        <p> Congrats you scored x out of y correct ! </p>
        <a class="rst" href="#" onclick="restartQuiz()"> Restart Quiz </a>
    </div>

</body>

</html>




var questions = [
    {
        title: "I like cricket.",
        answer: "I do not like cricket."
    },
    
    {
        title: "He is smart.",
        answer: "He is not smart."
    },
    
    {
        title: "She sings well.",
        answer: "She does not sing well."	
    },
    
    {
        title: "You are a cheat.",
        answer: "You are not a cheat."
    },
    
    {
        title: "They are coming.",
        answer: "They are not coming."
        
    },
    
];


let score = 0;
let currentQuestion = 0;

$('document').ready(function () {
    $('.start a').click(function (e) {
        e.preventDefault();
        $('.start').hide();
        $('.quiz').show();
        showQuestion();
    });
    
    $('.output').keyup(function (e) {
        if (e.keyCode === 13) {
            $('.sub').click();
        }
    });
});


function showQuestion() {
    let question = questions[currentQuestion];
    $('.input').val(question.title);
    
}

function checkAnswer() {
    let question = questions[currentQuestion];
    let out = $('.output').val();
    if (out == questions[currentQuestion].answer) {
        score++;
    }
    currentQuestion++;
    if (currentQuestion >= questions.length) {
        showSummary();
    } else {
        showQuestion();
    }
    
    $('.sub').click(function () {
        $('.output').val('');
    });
}


function showSummary() {
    $('.quiz').hide();
    $('.summary').show();
    $('.summary p').text("Congrats you scored " + score + " out of " + 
    questions.length + " correct !");
    
}

function restartQuiz() {
    $('.summary a').click(function (e) {
        e.preventDefault();
        $('.summary').hide();
        $('.quiz').show();
        currentQuestion = 0;
        showQuestion();
    });
}

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Проблема, с которой я сталкиваюсь, заключается в том, что я получаю правильный балл, если нажимаю на кнопку отправки каждый раз, но не получаю правильный балл, если нажимаю enter, чтобы отправить ответ.

Понимаете ли вы, что ваша страница quizz состоит из 2 частей, тесно связанных друг с другом, html и Javascript ?
Предоставляя только часть JS, вы мешаете нам помогать вам.

Я уже давно не играл с JS, но этот цикл ничего не делает
function showQuestion() {
    let question = questions[currentQuestion];
    $('.input').val(question.title);
    $('.quiz').html();
    for (var i = 0; i < question.answer.length; i++) {
    }
}