基本上,我使用的Chromebook无法区分alt键。如下图所示,左下角有一个(左边的第二个键,我称之为ALT1),右下角是较小的一个(右边的第5个键,ALT2)。 / p>
我的代码有if函数,由alt和enter键触发:
if (e.altKey && e.keyCode == 13) {
当我按下ALT1和回车键时,该功能按预期工作。但是,当我按下ALT2和回车键时,它所做的就是触发'enter'事件(所以,如果我在表格中,它会提交表格)。
要尝试解决此问题,我尝试使用
if (e.keyCode == 18 && e.keyCode == 13) {
然而,ALT1或ALT2都不适用。有什么想法吗?
答案 0 :(得分:1)
您可以在此页面中测试两个alt键代码:http://keycode.info/
也许Chromebook会为这两个alt键提供不同的代码。
答案 1 :(得分:1)
在现实生活中,很少有simultanius事件存在。我所说的是,无论你试图同时击中两把钥匙,你都不会在同一时间成功完成这项任务。
你现在可以使用它了。
var key1pressed = false;
var key2pressed = false;
$("#somelement").keydown(function(e) {
if(e.which == 13) {
key1pressed = true;
}
if(e.which == 18) {
key2pressed = true;
}
keyspressed();
}).keyup(function(e) {
if(e.which == 13) {
key1pressed = false;
}
if(e.which == 18) {
key2pressed = false;
}
});
function keyspressed() {
if(key1pressed == true && key2pressed == true) {
alert("you pressed these 2 keys together");
}
}
我想这就是你的意思?
答案 2 :(得分:1)
更新2
我使用了原始代码的略微修改版本。
<script>
window.onkeydown = function (e) {
var enter1 = false;
if (e.keyCode == 13) {
var enter1 = true;
}
if (e.key === 'AltGraph') {
if (enter1 = true) {
//Do what Alt + Enter does
console.log("It worked");
}
}
if (e.altKey && e.keyCode == 13) {
//Do what Alt + Enter does
console.log("It worked");
}
};
</script>
这就像一个魅力:现在ALT1和ALT2都有效。
原始答案:
通过使用此代码段,我能够找到答案。
document.getElementById("ta").addEventListener("keydown", function(e) {
var keyLocation = ["Standard", "Left", "Right", "Numpad", "Mobile", "Joystick"][e.location];
var message = "Key '" + (e.key || e.keyIdentifier || e.keyCode) + "' is down. Location: " + keyLocation;
this.value += "\n" + message;
e.preventDefault();
}, false);
&#13;
<textarea id="ta" rows="10" cols="50">Click on here and press some modifier keys such as Shift</textarea>
&#13;
ALT1注册为&#39; Alt&#39;,而ALT2注册为&#39; AltGraph&#39;。根据维基百科,AltGraph键是:
AltGr(也是Alt Graph,Alt Graphic,Alt Graphics,Alt Grammar,Alt Car或Right Alt [1])是在某些计算机键盘上找到的修饰键,主要用于键入区域设置不常见的字符键盘布局
知道了这一点,我可以很容易地修改我的原文&#34; if&#34;来自
的声明if (e.altKey && e.keyCode == 13) {
到这个
if (e.altKey && e.keyCode == 13 || e.key === 'AltGraph' && e.keyCode == 13) {
然而,我遇到了一个问题,并没有能够弄明白。
if (e.key === 'AltGraph') {
效果很好:但是,当我尝试
时 if (e.key === 'AltGraph' && e.keyCode == 13) {
它没有用。我不知道怎么做,如果有人能弄清楚,我会接受他们的回答。但是,就目前而言,我的答案包含了其他有类似问题的人的最相关信息。
更新:
我已经发现了错误 - 但是,我无法修复它。这段代码工作正常
if (e.shiftKey && e.key === 'AltGraph') {
这是因为我使用了e.shiftKey而不是e.keycode ==&#39; shift键代码&#39;。
但是,输入并不等同于此。使用&#39;模板&#39;在下面,它适用于Shift,Ctrl和Alt-但是,不适用于输入。有什么想法吗?
活动。[键]键
作为参考,我使用这些问题来找到答案
Is there a way to detect which side the Alt key was pressed on (right or left)?