Javascript: 如何处理开关盒内的 Shift + Tab?
Javascript: How to handle Shift + Tab inside switch case?
所以我一直在使用嵌套的 if-else
& event.which
来处理所有键盘导航,但我想更改为 switch-case
& event.key
。
我在处理 shift+tab 事件时遇到问题。
我试过:
switch(event.key){
case "Shift":
console.log("entering shift");
if(event.key === "Tab"){//do something}
console.log("exiting shift");
break;
case "Tab":
//handling only tab events
break;
}
但这似乎不起作用。控件进入移位块并离开移位块,而不输入 if(event.key === "Tab")
部分。因此,我无法处理 SHIFT
+ TAB
.
也尝试了 case "Shift" && "Tab":{}
,但这阻碍了 Tab
-only 块。
有没有办法在switch-case
.
中处理SHIFT
+ TAB
switch(event.key){
case "Shift":
console.log("entering shift");
//you enter this case because event.key === "Shift"
//so event.key === "Tab" will always be false
if(event.key === "Tab"){//do something}
console.log("exiting shift");
break;
我认为您真的不需要在这里使用 switch
,因为一些简单的 if
就可以了:
let shift = false;
document.addEventListener('keydown', event => {
if (event.key === 'Shift') {
shift = true;
}
});
document.addEventListener('keyup', event => {
if (event.key === 'Shift') {
shift = false;
}
if (event.key === 'Tab' && shift) {
//do stuff
}
}
});
所以我一直在使用嵌套的 if-else
& event.which
来处理所有键盘导航,但我想更改为 switch-case
& event.key
。
我在处理 shift+tab 事件时遇到问题。
我试过:
switch(event.key){
case "Shift":
console.log("entering shift");
if(event.key === "Tab"){//do something}
console.log("exiting shift");
break;
case "Tab":
//handling only tab events
break;
}
但这似乎不起作用。控件进入移位块并离开移位块,而不输入 if(event.key === "Tab")
部分。因此,我无法处理 SHIFT
+ TAB
.
也尝试了 case "Shift" && "Tab":{}
,但这阻碍了 Tab
-only 块。
有没有办法在switch-case
.
SHIFT
+ TAB
switch(event.key){
case "Shift":
console.log("entering shift");
//you enter this case because event.key === "Shift"
//so event.key === "Tab" will always be false
if(event.key === "Tab"){//do something}
console.log("exiting shift");
break;
我认为您真的不需要在这里使用 switch
,因为一些简单的 if
就可以了:
let shift = false;
document.addEventListener('keydown', event => {
if (event.key === 'Shift') {
shift = true;
}
});
document.addEventListener('keyup', event => {
if (event.key === 'Shift') {
shift = false;
}
if (event.key === 'Tab' && shift) {
//do stuff
}
}
});