检测keyCode发出错误的值

时间:2016-12-23 13:11:31

标签: javascript jquery html google-chrome firefox

我需要检测用户何时选择键盘上的字母] KeyCode:221并在dom上返回字母]

我的问题是:

如果从event.keyCode元素或input返回事件,则document返回的值会有所不同。

另外

在Chrome版本55.0上测试以下问题

我得到输入: event.keyCode:93 - String.fromCharCode:]

我得到的文件: event.keyCode:221 - String.fromCharCode:Ý

和Firefox 50.1.0

我得到输入: event.keyCode:0 - String.fromCharCode:

我得到的文件: event.keyCode:221 - String.fromCharCode:Ý

我需要知道:

  • 我的代码出了什么问题?
  • 获得相同价值的一致方法是什么?

注意:我使用的是ENG美国国际键盘(这可能相关吗?)。

var input = document.getElementById('input');
var result = document.getElementById('result');
input.addEventListener('keypress', function(event) {
  result.innerHTML = `event.keyCode: ${event.keyCode} - String.fromCharCode: ${String.fromCharCode(event.keyCode)}`;

});

var resultDocument = document.getElementById('resultDocument');

document.addEventListener('keydown', function(event){
  resultDocument.innerHTML = `event.keyCode: ${event.keyCode} - String.fromCharCode: ${String.fromCharCode(event.keyCode)}`;
});
<input id="input" type="text" size="40">
<div id="result"></div>

<h1>On document</h1>
<div id="resultDocument"></div>

3 个答案:

答案 0 :(得分:1)

在浏览器中不推荐使用Event.keyCode和inconsistent,如果可用,请使用Event.key。如果没有,您最好的选择是使用Keypress等库。 jQuery也会这样做。

答案 1 :(得分:0)

这看起来很好,似乎(至少它在Firefox中给出了相同的答案,还没有在其他浏览器中测试过)

var input = document.getElementById('input');
var result = document.getElementById('result');
input.addEventListener('keypress', function(event) {
  result.innerHTML = `event.which: ${event.which} - String.fromCharCode: ${String.fromCharCode(event.which)}`;
});

var resultDocument = document.getElementById('resultDocument');

document.addEventListener('keypress', function(event){
  resultDocument.innerHTML = `event.which: ${event.which} - String.fromCharCode: ${String.fromCharCode(event.which)}`;
});
<input id="input" type="text" size="40">
<div id="result"></div>

<h1>On document</h1>
<div id="resultDocument"></div>

答案 2 :(得分:0)

您正在使用按键事件从文档中获取输入和键控的键码。 Keyup和Keydown始终返回字符大写版本的unicode值。因此,如果您希望它区分大小写,我建议使用Keyup,否则您可以使用keypress。

http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml 查看更多信息。干杯