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 に答える