为什么我的代码中始终使用UpperCase?

时间:2010-02-15 03:10:16

标签: javascript jquery

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

你可以在你的浏览器中测试这段代码,并且它总是警告UpperCase一个charcode。

2 个答案:

答案 0 :(得分:9)

起初我认为这是一个错误,因为keypress事件返回了预期的小写值。事实证明,在keyup/keydown上,始终返回密钥的ASCII大写/非移位版本。

从此链接:http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml

  

访问keyCode时要小心   在onkeydown或   onkeyup事件,因为它随时设置   任何键被按下,包括非键   像“Shift”这样的字符键。这个   意味着如果您尝试按“Shift + a”来   尝试获取“A”的keyCode,你   总会得到两个   相反,keyCodes,一个用于“Shift”和   一个按顺序“A”。你是什​​么   不管是keyCode都不会得到   对于“a”,因为keyCode总是返回   大写的unicode值   角色的版本

  • 按Shift + a计为单个keypress事件。
  • 按下Shift + a会在按下按键时计为两个keydown事件,在释放按键时计为两个keyup事件。
  • keypress返回同时按下的一个或多个键的复合值。
  • keydownkeyup会返回单键的值,同时忽略任何键组合。

现在这里是令人困惑的部分:由于某种原因,a键的未移位值将作为键代码65返回。但是65表是ASCII表中的大写A.所以沿着这条线的某个地方,浏览器采用小写字母a(ASCII代码97),将其转换为大写字母A,然后将其作为非移位字符传递给它keydown/keyup。很奇怪,不是吗?

答案 1 :(得分:1)

(猜测)

它引用了没有案例的 Key 。案例取决于班次键是否也已关闭。