Jak rozpoznać kombinacje klawiszy, jeżeli najpierw zostałby wciśnięty enter?

0

Chciałbym rozpoznawać kombinacje klawiszy enter + spacja, gdzie enter byłby zawsze wciskany jako pierwszy. Czy jest to możliwe? Jeśli chciałbym rozpoznać czy jest wciskany np. tylko enter to bym zastosował coś takiego:

$('#example").on('keyup', function (e) {
            var keyCode = (window.event) ? e.which : e.keyCode;
            if (keyCode === 13) {
                console.log("UDALO SIE");
            }

Jednak czy jest możliwe sprawdzanie kombinacji kilku klawiszy z tym założeniem, że któryś z nich byłby wciskany jako pierwszy?

1

Nie robiłem tego nigdy, ale na logikę: można zrobić tablicę wciśniętych klawiszy (zewnętrzną w stosunku do funkcji obsługi zdarzenia wciśnięcia klawisza). I teraz: jeśli został wciśnięty drugi klawisz z sekwencji, to w funkcji obsługi zdarzenia wciśnięcia klawisza sprawdzasz, czy w tablicy już jest (jako ostatni) pierwszy klawisz z sekwencji. Jeśli jest, to usuwasz go z tablicy i wywołujesz funkcję obsługi tej sekwencji. Jeśli nie ma, to nie robisz nic / czyścisz tablicę / usuwasz klawisz itp. (co potrzeba). Jeśli został wciśnięty pierwszy klawisz z sekwencji, to dodajesz go do tej tablicy.

Możesz oczywiście czyścić tablicę, czy usuwać z niej klawisze, w jakich chcesz momentach (żeby, na przykład, wciśnięcie pewnych sekwencji nie robiło nic).

Ten artykuł mnie na to naprowadził (tylko przejrzałem kody, nie czytałem): https://medium.com/javascript-in-plain-english/how-to-detect-a-sequence-of-keystrokes-in-javascript-83ec6ffd8e93 Jest tam też mowa o minimalnym czasie między wciśnięciami klawiszy w sekwencji.

2

Rozwiązanie zaproponowane przez @Silv jest spoko, a najprościej zrobisz to trzymając zmienną z ostatnim klawiszem albo flagą enter przyjmującą True jeżeli wciśnięto Enter. Następnie w zdarzeniu łapiącym klawisze sprawdzasz czy flaga jest true a aktualny klawisz to drugi klawisz sekwencji jeżeli nie to zmieniasz wartość flagi enter itd.

$('#example").on('keyup', function (e) {
            var keyCode = (window.event) ? e.which : e.keyCode;
            var enter;
            if (keyCode === 13) {
                enter = true;
            } else if(keyCode === 32) {
               if(enter) {
                   console.log("UDALO SIE");
               }
               enter = false;
            }

1 użytkowników online, w tym zalogowanych: 0, gości: 1