0

私はこのコードを持っています

(function() {
    $('.chkBtn').click(function() {
        check();            
    });

    $(".chkTxt").bind("keyup change", function(e) {
        var keyCode = (window.event) ? e.which : e.keyCode;
        console.log(keyCode);
        if (keyCode == 13) {
            check();
        }
    });
})();

「Enter」と入力して入力にEnterキーを押すと、コンソールに次のkeyCodesが表示されます。

108 
69 
78 
84 
69 
82 
undefined 
13 

未定義、Enterキーを押すと13戻ります。

このコードが「未定義」の結果を返すのはなぜですか?

4

1 に答える 1

3

ENTER押されると、 のchange前にイベントが発生しkeyupます。そのイベントkeyCodeundefined、イベントがキーボードに関連付けられていないためです (たとえば、マウスで他のコントロールにフォーカスを与えることで簡単にトリガーできます) undefined。コンソールに表示されます。

その後、keyupイベントが発生し、期待される出力が生成されます13

これは、出力にイベントの名前を出力することで確認できます。

console.log(e.type + " gives the code " + keyCode);
于 2013-02-05T10:23:09.393 に答える