<script type="text/javascript" src="jquery-1.3.2.js"></script>
<input id=a type="text" value='sss'/>
<script type="text/javascript">
$('#a').keyup(
function(event){
alert(String.fromCharCode(event.which))
})
</script>
можно протестировать этот код в brower,
и это всегда предупреждает UpperCase charcode.
Сначала я подумал, что это ошибка, поскольку для события нажатие клавиши
возвращается ожидаемое значение в нижнем регистре. Оказывается, что при keyup / keydown
всегда возвращается ASCII-версия ключа в верхнем регистре / без сдвига.
По этой ссылке: http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml
Будьте осторожны при доступе к свойству keyCode во время onkeydown или onkeyup событие, поскольку оно устанавливается всякий раз, когда нажимается любая клавиша, включая клавиши, не содержащие символов, такие как "Shift". Это означает, что если вы попытаетесь нажать "Shift + A", чтобы попытаться получить keyCode для "A", вы всегда получите два keyCodes, один для Shift и один для A в указанном порядке. Независимо от того, что вы не получите, так это keyCode для "a", , поскольку keyCode всегда возвращает значение Unicode заглавной версии символ
нажатие клавиши
. keydown
, когда клавиши нажаты, и два события keyup
, когда клавиши отпускаются. keypress
возвращает составное значение одной или нескольких клавиш, нажатых в унисон. keydown
и keyup
возвращают значение единственной клавиши , игнорируя любые комбинации клавиш. Теперь вот что сбивает с толку: по какой-то причине несмещенное значение ключа a
возвращается как ключевой код 65. Но 65 - это верхний регистр A в таблице ASCII. Итак, где-то вдоль строки браузер принимает строчную букву a (код ASCII 97), преобразует ее в верхний регистр A, а затем передает ее keydown / keyup
как несмещенный символ. Странно, не правда ли?
(предположить)
Это ссылка на ключ , у которого нет регистра. Регистр определяется тем, нажата ли клавиша Shift.