Событие onkeypress Javascript срабатывает, но введенное текстовое значение неверно - PullRequest
2 голосов
/ 19 февраля 2012

Я пишу простую форму JavaScript, которая сравнивает входное значение со значением «синий». Теперь, если вы введете «синий», он говорит, что это неверно, но затем, если добавить какой-либо дополнительный символ, он говорит, что правильно. Кажется, что задержка в один символ, поэтому, когда я ввожу «синий», он становится только «синим». Вот код:

<html>
<head>
<title>Favorite Color</title>
</head>

<body>
<h1>Quiz Time</h1>
<h2>What is your favorite color?</h2>

<p>Your Answer: <input type="text" id="txtinput" /></p>
<p id="message"></p>

<script type = "text/javascript">
function init() {
    var inp = document.getElementById("txtinput");
    inp.onkeypress=checkAnswer;

    checkAnswer();
}

onload = init;

function checkAnswer() {
    var text = document.getElementById("txtinput");
    var msg = document.getElementById("message");

    var sol = "blue";
    var ans = text.value;
    ans = ans.toLowerCase();

    if (ans.length <=0) {
        msg.innerHTML="<span style=\"color:blue;\">Enter Something.</span>";
    }
    else if (ans == sol) {
        msg.innerHTML="<span style=\"color:green;\">Correct!</span>";
    } else {
        msg.innerHTML="<span style=\"color:red;\">Wrong!</span>";
    }
}

</script>
</body>
</html>

Ответы [ 2 ]

6 голосов
/ 19 февраля 2012

Измените событие на onkeyup вместо onkeypress

inp.onkeyup=checkAnswer;
1 голос
/ 19 февраля 2012

Используйте событие HTML5 input с откатом к событию propertychange в IE <9. Я писал об этом много раз на SO;Вот два примера: </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...