0

我正在制作一个小 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()"/>
4

1 回答 1

4

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;
    ...
于 2011-01-24T08:06:40.613 回答