我需要检测用户何时选择键盘上的字母]
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>
答案 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 查看更多信息。干杯