Вопрос по javascript, jquery – JQuery. Ключ и .keydown. который

33

Итак, в чем разница между .keypress и .keydown / .keyup? В настоящее время я использую .keydown, который возвращает значение 38, которое для моего ключа, теперь, если я изменяю его на .keypress, оно возвращает значение 109 для того же ключа. В чем разница и почему значения отличаются для одного и того же ключа?

У меня есть объект json с каждым ключевым событием и каждым из них делится на браузер, я тоже очень быстро опубликую его со всеми тремя нажатиями клавиш, и мы можем проверить это, трюк, как за 10 минут. SpYk3HH
Разные браузеры должны приводить к разным событиям, которые, но не к разным ключевым командам SpYk3HH
какой браузер вы используете? Mathletics

Ваш Ответ

5   ответов
21

с нажатием клавиш действительно есть разница, и все это время я так и не осознал. лол

Посмотрите на мою скрипку и попробуйте что-то вроде буквы «r»

http://jsfiddle.net/SpYk3/NePCm/

Я почему-то никогда не обращал на это внимания

Found more info:

http://www.quirksmode.org/js/keys.html

"The two properties are keyCode and charCode. Put (too) simply, keyCode says something about the actual keyboard key the user pressed, while charCode gives the ASCII value of the resulting character. These bits of information need not be the same; for instance, a lower case 'a' and an upper case 'A' have the same keyCode, because the user presses the same key, but a different charCode because the resulting character is different.

Explorer and Opera do not support charCode. However, they give the character information in keyCode, but only with onkeypress. onkeydown and -up keyCode contains key information."

Да, так вот почему я запутался, почему? ChrisMJ
хотя я бы посоветовал избегать нажатия клавиш, так как он не запускает такие предсказуемые события, как keydown и keyup
хорошо, как JBL указал в своем ответе,this page описывает проблему чуть-чуть, но, похоже, не отвечает на вопрос в целом. Может быть, я неправильно прочитал страницу, но в какой-то момент она все еще указывает на то, что кодовый код перетаскивается на оба, просто один возвращает другое значение. Возможно, взгляд в какой-то старый документ JS найдет ответ. Я смотрю сейчас, также перепишу свой объект, чтобы включить различия нажатия клавиш
21

keydown и выпуская это зажигаетkeyup,keypress обычно встает между этими двумя.

keydown а такжеkeyup говорить о том, какиеkey был изменен.keypress говорит какойcharacter этот ключ представляет.

Обратите внимание, что все это зависит от браузера!

Увидетьэта статья о различиях между ключевыми событиями, реализованными в различных браузерах.

14

http://javascript.info/tutorial/keyboard-events

Keydown triggers on any key press and gives scan-code. Keypress triggers after keydown and gives char-code, but it is guaranteed for character keys only.

6

keyup:

$(document).keyup(function(e){
  console.log(e.which);
});

Причины:

keydown keeps firing when user holds the keys down, while keypress and keyup fire only once. keypress doesn't detect special keys (e.g. SHIFT), keydown and keyup do.
2

вы можете использовать KeyDown, чтобы определить, какой это ключ, а затем KeyPress, чтобы запретить этот символ.

Похожие вопросы