为什么我必须按两次该键?
我正在制作一个小 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
onKeyDown
事件发生在字符实际附加到文本框之前。要捕获新字符,请使用
onkeyup
事件。无论如何,您的代码当前不是跨浏览器的。
window.event
不是标准的,而是将事件作为参数传递给函数,如下所示:然后在函数中:
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:Then in the function: