使用e.keyCode || e.which;如何区分大小写字母?

6

我正在使用e.keyCode || e.which;来确定按下了哪个键,但是我发现无论是a还是A,我都会得到65,这是为什么?如何区分这两者之间的差异?


8
关键字 ≠ 字符。 - Gumbo
+1,我可以请您详细说明一下吗? - Babiker
非常简单:并不是每个键都对应一个字符。一些非字符键的例子包括箭头键,控制键、Alt键和Shift键,或功能键。 - BoltClock
5个回答

10

在jQuery中,只需使用e.which即可。它会为所有浏览器规范化此值。

此外,您还可以检查e.shiftKey


1
请注意(至少在v1.7.1中),这对于keypress并不正确 - 对于大多数键,e.which将为0 - 但对于keydown它将起作用。 - Synexis
@Synexis,你能提供一个源链接吗?我在1.9.1中没有看到这种行为。 - Josiah Ruddell

2
无论是'a'还是'A',键盘按下的结果都是65,并且对于该键,始终为65。事件只会指定按下了哪个键,而不是它的值;这是两件不同的事情。您可以测试event.shiftKey以及您要查找的键,但我不认为这将处理启用了大写锁定的情况。

7
这仅适用于“keydown”和“keyup”事件。而“keypress”事件会提供有关所键入字符的信息。 - Tim Down

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>

这将产生大写字母,即使输入的是小写字母。 - tbeseda

0

使用纯JavaScript编写时,这在跨浏览器方面存在严重的问题,因此您应该使用Josiah Ruddell的解决方案。请参见this article,了解更多信息。


1
它出了问题,但不是非常复杂的方式。jQuery的规范化非常简单。 - Tim Down

0

keyCode无法指示输入的字符。
要真正找到用户最后输入的字符,您需要检查输入的值并查找最后一个字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接