我今天发现按下 Enter 键时不会触发 keypress 事件,因此您可能想要切换到 keydown() 或 keyup() 。
我的测试脚本:
$('.module input').keydown(function (e) {
var keyCode = e.which;
console.log("keydown ("+keyCode+")")
if (keyCode == 13) {
console.log("enter");
return false;
}
});
$('.module input').keyup(function (e) {
var keyCode = e.which;
console.log("keyup ("+keyCode+")")
if (keyCode == 13) {
console.log("enter");
return false;
}
});
$('.module input').keypress(function (e) {
var keyCode = e.which;
console.log("keypress ("+keyCode+")");
if (keyCode == 13) {
console.log("Enter");
return false;
}
});
在键盘上键入“A Enter B”时控制台中的输出:
keydown (65)
keypress (97)
keyup (65)
keydown (13)
enter
keyup (13)
enter
keydown (66)
keypress (98)
keyup (66)
您在第二个序列中看到“keypress”缺失,但 keydown 和 keyup 注册代码“13”被按下/释放。根据函数 keypress() 的 jQuery 文档:
Note: as the keypress event isn't covered by any official specification, the actual behavior encountered when using it may differ across browsers, browser versions, and platforms.
在 Server 2012 R2 上的 IE11 和 FF61 上测试