#javascript #reactjs #if-statement #key #keydown
Вопрос:
Мне нужно настроить комбинацию кнопок в форме ввода моего приложения react.
- «CTRL «Стрелка вверх»
- «Стрела вверх»
Мой код примерно такой.
//Form lt;input onKeyDown={keyHandler}/gt; //handler const keyhandler = (e) =gt; { if(e.key === "ArrowUp") {//do something} if(e.key === 'ArrowUp' amp;amp; e.getModifierState("Control")) {//do another thing}
Проблема в том, что когда событие запускается с комбинацией, сначала «если» также верно. Как разделить «Стрелка вверх» и «Стрелка вверх» с помощью кнопки ctrl?
Я тоже пытаюсь так (но это не помогло):
if(e.key === 'ArrowUp' amp;amp; event.ctrlKey){ //do another thing}
Комментарии:
1. Вы пытались изменить последовательность ваших
if
-утверждений? Просто сначала проверьте наличиеctrl
кнопки. Это означает: переместите второеif
утверждение перед первым!
Ответ №1:
Просто следую твоей логике,
if (Control is pressed) { if (ArrowUp is pressed) { // both are pressed } } else { if (ArrowUp is pressed) { // only arrow up is pressed } }
Ответ №2:
Я решил свою проблему с помощью этого.
if(!e.getModifierState('Control')){ if(e.key == 'ArrowUp'){ //single button action } } if(e.key == "ArrowUp" amp;amp; e.getModifierState("Control")){ //combo buttons action }