Почему я должен нажать клавишу дважды? - PullRequest
0 голосов
/ 24 января 2011

Я делаю небольшую игру для JS и пытаюсь сделать так, чтобы пользовательский ввод был проверен как можно скорее, поэтому я использую функцию onKeyDown.Проблема в том, что если ответ 5, мне нужно нажать 5, а затем снова нажать 5, чтобы он распознал ввод пользователя, почему это происходит?

var btn=0
var num=""
var digits=1
function quickanswer(){
    if (document.getElementById("autocheck").checked==true&&document.getElementById("txt").value.length==digits){
        document.getElementById("dots").innerHTML = ""
        createdots()
        document.getElementById("txt").value=""
        document.getElementById("txt").focus()
        document.getElementById("txt").style.color = "#000000"
    }
}
function submitenter(){
    var keycode = window.event.keyCode;
    if (keycode == 13)
       {
       btnclick();
       }
    if (keycode < 47 || keycode > 58){
       return false;}
    }

<input id="txt" type="text" onKeyPress="return submitenter()" onKeyDown="quickanswer()"/>

1 Ответ

4 голосов
/ 24 января 2011

Событие onKeyDown происходит до , когда символ фактически добавляется в текстовое поле.

Чтобы захватить нового персонажа, используйте событие onkeyup.

В любом случае, ваш код в настоящее время не является кросс-браузерным. window.event не является стандартным, вместо этого передайте событие в качестве аргумента функции следующим образом:

onKeyPress="return submitenter(event)"

Тогда в функции:

function submitenter(evt){
    //IE fix
    if (typeof evt == "undefined")
        evt = window.event;
    var keycode = evt.keyCode || evt.which;
    ...
...