2010-12-09 2 views
6

Я использую e.keyCode || e.which;, чтобы определить, какая клавиша была нажата, но я получаю 65 для обоих a и A. Почему это происходит и как я могу определить разницу между ними?Использование e.keyCode || e.which; как определить разницу между строчными и прописными буквами?

+8

ключ ≠ знак. – Gumbo 2010-12-09 17:37:52

+0

+1, Могу ли я просить о разработке? – Babiker 2010-12-09 17:39:27

+0

Довольно просто: не каждый символ соответствует символу. Некоторые примеры несимметричных клавиш - это клавиши со стрелками. Или Control, Alt и Shift. Или функциональные клавиши. – BoltClock 2010-12-09 18:05:59

ответ

10

просто используйте e.which в jquery. Они нормализуют это значение для всех браузеров.

Дополнительно вы можете проверить наличие e.shiftKey.

+1

Имейте в виду, что (по крайней мере, в версии 1.1.1) это неверно для keypress - e.which будет 0 для большинства клавиш, но он будет работать для keydown. – Synexis 2013-05-20 05:59:47

+0

@Synexis вы можете предоставить ссылку на источник? Я не вижу такого поведения в 1.9.1. – 2013-05-20 14:45:19

0

Этот сценарий полезен для малых и заглавных букв нажмите

<form> 
    Char: <input type="text" id="char" size="15" /> Keycode: <input type="text" id="unicode" size="15" /> 
    </form> 

    <script type="text/javascript"> 

    var charfield=document.getElementById("char") 
    charfield.onkeypress=function(e){ 
    var e=window.event || e 
    var keyunicode=e.charCode || e.keyCode 
    document.getElementById("unicode").value=keyunicode 
    } 

    </script> 
0

Это эффектно кросс-браузер разбитым в ванильным JavaScript, поэтому вы должны использовать решение Джосаи Раделл в. См. this article больше, чем вы хотите знать.

0

keyCode не укажет, какой символ был введен.
Чтобы по-настоящему найти символ, последний введенный пользователем, вам нужно будет изучить значение ввода и найти последний символ.

2

Является ли это «а» или «А», 65 является результатом нажатия клавиши на клавиатуре, и для этой клавиши всегда 65.

Событие укажет только, какая клавиша нажата, а не ее значение; это две разные вещи. Вы можете протестировать событие event.shiftKey вместе с ключом, который вы ищете, но я не верю, что он будет обрабатывать сценарий, в котором включен Caps Lock.

Смежные вопросы