Сьогодні я з’ясував, що подія натискання клавіші не спрацьовує при натисканні клавіші Enter, тому ви можете замість цього перейти на клавішу 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)
Ви бачите, що у другій послідовності відсутній "натискання клавіші", але код реєстрації клавіш та клавіш "13" як натиснутий / відпущений. Відповідно до документації 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.
Тестовано на IE11 і FF61 на сервері 2012 R2