Задача состоит в том, чтобы перемещаться в раскрывающемся списке с помощью клавиш со стрелками вместо TAB / TAB + SHIFT. Одна из идей состояла в том, чтобы заменить события нажатия клавиш со стрелками для имитации нажатия клавиши TAB / TAB + SHIFT. Мой подход сводится к приведенному ниже коду, который успешно предотвращает события по умолчанию для клавиш со стрелками и запускает код для клавиши TAB, показывающий предупреждение.
К сожалению, он не перемещает выделение на нужный элемент списка и, кроме того, вызывает клавишу TAB событие на бумаге ничего не делает.
Есть идеи, почему оно не работает?
handleKeyDown = (e) => {
let element = e.currentTarget;
switch (e.keyCode) {
case 40:
e.preventDefault();
const event = new KeyboardEvent("keydown", { view: window, bubbles: true, cancelable: true, keyCode: 9, shiftKey: false });
element.dispatchEvent(event);
break;
}
switch (e.keyCode) {
case 38:
e.preventDefault();
const event = new KeyboardEvent("keydown", { view: window, bubbles: true, cancelable: true, keyCode: 9, shiftKey: true });
element.dispatchEvent(event);
break;
}
// the switch case 9 is only used for debugging purposes
switch (e.keyCode) {
case 9:
e.preventDefault();
alert ("You pressed the 'TAB' key!");
break;
}
<Popover onKeyDown={this.handleKeyDown}>