Использование e.keyCode || e.which; как определить разницу между строчными и прописными буквами? - PullRequest
6 голосов
/ 09 декабря 2010

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

Ответы [ 5 ]

10 голосов
/ 09 декабря 2010

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

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

2 голосов
/ 09 декабря 2010

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

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

0 голосов
/ 09 декабря 2010

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

0 голосов
/ 09 декабря 2010

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

0 голосов
/ 09 декабря 2010

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

<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>
...