<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>
Run Code Online (Sandbox Code Playgroud)
你可以在浏览器中测试这段代码,
它总是提醒TopCase一个charcode.
起初我认为这是一个错误,因为keypress事件返回了预期的小写值.事实证明,在keyup/keydownASCII的大写/非移位版本的键总是返回.
从以下链接:http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml
在onkeydown或onkeyup事件期间访问keyCode属性时要小心,因为只要按下任何键就会设置它,包括非"Shift"之类的非字符键.这意味着如果您尝试按"Shift + a"尝试获取"A"的keyCode,您将始终获得两个keyCodes,一个用于"Shift",另一个用于"A".你不会得到的是"a"的keyCode,因为keyCode总是返回一个字符的大写版本的unicode值
keypress事件.keydown事件,keyup释放键时按两个事件.keypress返回一致按下的一个或多个键的复合值.keydown并keyup返回单个键的值,同时忽略任何键组合.现在这里是令人困惑的部分:由于某种原因,a密钥的未移位值作为密钥代码65返回.但是65表是ASCII表中的大写A. 所以沿着这条线的某个地方,浏览器采用小写字母a(ASCII码97),将其转换为大写字母A,然后将其keydown/keyup作为非移位字符传递.很奇怪,不是吗?