Ответ 1
События предназначены для совершенно разных целей. Используйте keyup
и keydown
для идентификации физических ключей и keypress
для идентификации типизированных символов. Эти две принципиально разные задачи с разными событиями; не пытайтесь смешивать их. В частности, события keyCode
on keypress
обычно являются избыточными и не должны использоваться (кроме более старого IE, но см. Связанный документ ниже для более подробного); для печатных клавиатур он обычно совпадает с which
и charCode
, хотя между браузерами существует некоторая разница.
Статья Яна Вольтера о ключевых событиях, уже связанная в другом ответе, является окончательным словом по этому вопросу для меня и содержит таблицы, описывающие, что каждое из свойств возвращается для каждого типа ключевых событий и каждого браузера.