Javascript 将KeyDown键代码转换为字符串(jQuery)

Javascript 将KeyDown键代码转换为字符串(jQuery),javascript,jquery,Javascript,Jquery,我正在寻找一种方法,将按键转换为对应于chracter的字符串。大概是这样的: $(document).keydown(function(event) { console.log(String.fromCharCode(event.which)); }); 但此代码不考虑大小写,也不适用于特殊字符,例如“,”。这: 这似乎是个诀窍,但它无法阻止默认的浏览器操作(如返回退格),而且似乎存在浏览器兼容问题 有没有更好的方法可以跨浏览器和键盘布局工作?不可能可靠地从事件中获取字符。该属性位于

我正在寻找一种方法,将按键转换为对应于chracter的字符串。大概是这样的:

$(document).keydown(function(event) {
    console.log(String.fromCharCode(event.which));
});
但此代码不考虑大小写,也不适用于特殊字符,例如“,”。这:

这似乎是个诀窍,但它无法阻止默认的浏览器操作(如返回退格),而且似乎存在浏览器兼容问题


有没有更好的方法可以跨浏览器和键盘布局工作?

不可能可靠地从
事件中获取字符。该
属性位于
按键
以外的事件类型

如果您对该声明有疑问,请使用位于的演示。
事件。该
属性只能在
按键
事件中正确转换


如果要忽略大写字母,请使用
.toLowerCase()
方法。

无法可靠地从
事件中获取字符。该
属性位于
按键以外的事件类型

如果您对该声明有疑问,请使用位于的演示。
事件。该
属性只能在
按键
事件中正确转换


如果要忽略大写字母,请使用
.toLowerCase()
方法。

您可以使用相同的技巧获得与按下的键对应的字符代码。要防止默认浏览器操作,您可以尝试以下操作-

event.preventDefault(); //For all major browsers

event.returnValue = false; //For Internet Explorer

您可以使用相同的技巧来获得与按下的键对应的字符代码。要防止默认浏览器操作,您可以尝试以下操作-

event.preventDefault(); //For all major browsers

event.returnValue = false; //For Internet Explorer

keydown
事件不提供大写字符,这并不奇怪,因为它是由SHIFT键控制的,此时可能按也可能不按SHIFT键

要防止默认浏览器操作,只需从处理程序返回false


您遇到了哪些浏览器兼容性问题?

不奇怪的是,
keydown
事件没有给您提供大写字符,因为它是由SHIFT键控制的,此时可能按SHIFT键,也可能不按SHIFT键

要防止默认浏览器操作,只需从处理程序返回false


您遇到了哪些浏览器兼容性问题?

被否决的原因是什么?答案是正确的:
事件。哪个
keydown
事件中为
@
2
保留相同的值,而
keypress
事件为
@
返回正确的charCode。可能是因为您没有回答实际问题,即如何防止默认浏览器操作。你可能是对的,但它仍然不能回答问题。我建议您将其扩展为包含默认操作的解决方案。@FelixKling我不同意这是主要问题。@FelixKling但是,正如我在回答中提到的,无法获取字符代码和浏览器事件。我已经回答了第一个问题,并解释了为什么第二个问题不能令人满意地回答。这与我给出的答案几乎相同,尽管实际上在所有主要浏览器中,通常可以在
keypress
中抑制默认行为。然而,对于退格导航到上一页,这似乎不起作用。在这种情况下,只需使用
keydown
。downdvote的原因是什么?答案是正确的:
事件。哪个
keydown
事件中为
@
2
保留相同的值,而
keypress
事件为
@
返回正确的charCode。可能是因为您没有回答实际问题,即如何防止默认浏览器操作。你可能是对的,但它仍然不能回答问题。我建议您将其扩展为包含默认操作的解决方案。@FelixKling我不同意这是主要问题。@FelixKling但是,正如我在回答中提到的,无法获取字符代码和浏览器事件。我已经回答了第一个问题,并解释了为什么第二个问题不能令人满意地回答。这与我给出的答案几乎相同,尽管实际上在所有主要浏览器中,通常可以在
keypress
中抑制默认行为。然而,对于退格导航到上一页,这似乎不起作用。在这种特定情况下,只需使用
keydown
。或者只需从handler@Maarten-我确实读过这个问题,我从中得出的结论是,您已经找到了一种从事件中获取正确密钥代码的方法,并且想要一种跨浏览器的方法来防止默认密钥操作。如果我的理解不正确,请原谅。我建议的方法实际上可以防止跨浏览器执行默认键操作。@liho1eye-return false可以做到这一点,但将returnValue设置为“false”具有更高的优先级。我已经尝试过这段代码,它在所有浏览器中都能正常工作。或者从handler@Maarten-我确实读过这个问题,我从中得出的结论是,您已经找到了一种从事件中获取正确密钥代码的方法,并且想要一种跨浏览器的方法来防止默认密钥操作。如果我的理解不正确,请原谅。我建议的方法实际上可以防止跨浏览器执行默认键操作。@liho1eye-return false可以做到这一点,但将returnValue设置为“false”具有更高的优先级。我已经尝试过这段代码,它在所有浏览器中都能完美工作。