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 

未定义,按回车时返回 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 回答