2011-01-24 64 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

相關問題