Как узнать, какая клавиша символа нажата?
Я хотел бы узнать, какая клавиша символов нажата в кросс-браузерном совместимом способе в чистом javascript.
9 ответов:
" Очистить " JavaScript:
<script type="text/javascript"> function myKeyPress(e){ var keynum; if(window.event) { // IE keynum = e.keyCode; } else if(e.which){ // Netscape/Firefox/Opera keynum = e.which; } alert(String.fromCharCode(keynum)); } </script> <form> <input type="text" onkeypress="return myKeyPress(event)" /> </form>
JQuery:
$(document).keypress(function(event){ alert(String.fromCharCode(event.which)); });
здесь есть миллион дубликатов этого вопроса, но здесь все равно повторяется:
document.onkeypress = function(evt) { evt = evt || window.event; var charCode = evt.keyCode || evt.which; var charStr = String.fromCharCode(charCode); alert(charStr); };
лучшая ссылка на ключевые события, которые я видел, это http://unixpapa.com/js/key.html.
более свежие и гораздо чище: использовать
event.key
. Больше никаких произвольных цифровых кодов!node.addEventListener('keydown', function(event) { const key = event.key; // "a", "1", "Shift", etc. });
Если вы хотите убедиться, что введены только отдельные символы, проверьте
key.length === 1
, или, что это один из символов, которые вы ожидаете.
посмотрите на этот сайт для кросс-браузерных несоответствий http://www.quirksmode.org/js/keys.html
используйте этот:
function onKeyPress(evt){ evt = (evt) ? evt : (window.event) ? event : null; if (evt) { var charCode = (evt.charCode) ? evt.charCode :((evt.keyCode) ? evt.keyCode :((evt.which) ? evt.which : 0)); if (charCode == 13) alert('User pressed Enter'); } }
**check this out** <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(document).ready(function(){ $(document).keypress(function(e) { var keynum; if(window.event) { // IE keynum = e.keyCode; } else if(e.which) { // Netscape/Firefox/Opera keynum = e.which; } alert(String.fromCharCode(keynum)); var unicode=e.keyCode? e.keyCode : e.charCode; alert(unicode); }); }); </script> </head> <body> <input type="text"></input> </body> </html>
одна из моих любимых библиотек, чтобы сделать это сложным способом является Мышеловка.
Он поставляется с различными плагинами, одним из которых является
record
плагин, который может определить последовательность нажатых клавиш.пример:
<script> function recordSequence() { Mousetrap.record(function(sequence) { // sequence is an array like ['ctrl+k', 'c'] alert('You pressed: ' + sequence.join(' ')); }); } </script> <button onclick="recordSequence()">Record</button>
этот случай может быть решен по одной ссылке:
Я не вижу никаких различий между Chrome и IE, но если вам действительно интересно, Какие коды появляются в браузере, просто просмотрите этот сайт в каждом браузере, чтобы записать результаты. Я уверен, что все ключевые коды одинаковы. Просмотр исходного кода на сайте может дать некоторое представление о том, как эти коды тоже определено.