4

一个简单的问题:当我onkeydown在 HTML 中使用事件时,我怎样才能知道按下了什么键?我敢肯定这真的很容易,但我试过用谷歌搜索它;w3schools 没有任何帮助,所有其他结果都是人们询问特定浏览器。有没有在所有主流浏览器中都有效的方法?

谢谢!

4

2 回答 2

6

您要查找的事件是keydown Event,它为您提供以下属性

  • charDOMString (string) 键的字符值。如果键对应于可打印字符,则此值是包含该字符的非空 Unicode 字符串。如果密钥没有可打印的表示,则这是一个空字符串。有关详细信息,请参阅键名和 char 值。只读。注意:如果键用作插入多个字符的宏,则该属性的值是整个字符串,而不仅仅是第一个字符。

  • keyDOMString(string) 事件所代表的键的键值。如果该值具有打印表示,则此属性的值与 char 属性相同。否则,它是 {{ anch("Key values") }} 中指定的键值字符串之一。如果无法识别密钥,则为字符串“未识别”。有关详细信息,请参阅键名和 char 值。只读。

  • charCode 不推荐使用 Unsigned long (int) 密钥的 Unicode 参考号;此属性仅由 keypress 事件使用。对于 char 属性包含多个字符的键,这是该属性中第一个字符的 Unicode 值。只读。
    警告:此属性已弃用;如果可用,您应该改用 char。

  • keyCode 不推荐使用 Unsigned long (int) 一个与系统和实现相关的数字代码,用于标识按下的键的未修改值。这通常是密钥对应的十进制 ASCII ({{ RFC(20) }}) 或 Windows 1252 代码;请参阅 {{ anch("Virtual key codes") }} 获取常用值列表。如果无法识别密钥,则该值为 0。只读。
    警告:此属性已弃用;如果可用,您应该改用密钥。

  • which 已弃用Unsigned long (int) 与系统和实现相关的数字代码,用于标识按下的键的未修改值;这通常与 keyCode 相同。只读。
    警告:此属性已弃用;如果可用,您应该改用密钥。

由于实现不一致,您需要使用逻辑OR ||来获得客户端浏览器支持的 OR。

于 2013-06-11T18:51:11.950 回答
1

通常,您希望避免在 html 中设置事件。但如果我不得不猜测你的代码有点像这样:

<tag onkeydown="javascript:function_name()">

拥有您的实际代码将有助于指导这一点,但这是下一步。

function function_name(event){
     console.log(event.key) //or event.keyCode / event.which
}

这应该输出您按下的键。供您自己参考。

于 2013-06-11T18:54:11.867 回答