为什么我必须按两次该键?

发布于 2024-10-13 06:29:54 字数 844 浏览 3 评论 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()"/>

I am making a little JS game and I am trying to make the user's input checked ASAP, so I am using the onKeyDown function. Problem is, if the answer is 5, I have to press 5, then press 5 again for it to recognize the user's input, why is this happening?

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()"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

羁绊已千年 2024-10-20 06:29:54

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;
    ...

The onKeyDown event happens before the character is actually appended to the textbox.

To capture the new character use onkeyup event instead.

Anyway, your code is currently not cross browser.. window.event is not standard instead pass the event as argument to the function like this:

onKeyPress="return submitenter(event)"

Then in the function:

function submitenter(evt){
    //IE fix
    if (typeof evt == "undefined")
        evt = window.event;
    var keycode = evt.keyCode || evt.which;
    ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文