2011-01-24 67 views
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

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

是有没有办法让onKeyDown按下哪个键? – Sean 2011-01-25 01:03:37

相关问题