Оповещение о срабатывании, только если нажаты 4 кнопки: например, если в этом порядке нажать 4 3 5 2 клавиши, то срабатывает предупреждение - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно создать событие, которое срабатывает только после нажатия четырех клавиш в определенном порядке. Я не эксперт по jquery, возможно ли это сделать?

Я уже знаю, как вызвать предупреждение, если нажата клавиша 4, но я не знаю, как это сделать после нажатия четырех клавиш в определенном порядке.

$(document).keydown(function(keyPressed) {
        if (keyPressed.keyCode == 52) {
            alert("Hello!");
        }
    });

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Используя старый добрый простой ванильный Javascript, вот пример:

const code = "4352", sequence = [...code];
let keysPressed = [];

document.addEventListener('keydown', (event) => {
  keysPressed.push(event.key);
  if (keysPressed.every((key, index) => key === sequence[index])) {
    if (keysPressed.length === sequence.length) {
      alert('correct code entered!');
    } else { return; }
  } 
  keysPressed = [];
})

Альтернативное решение с использованием только String вместо Array:

const code = "4352";
let keysPressed = "";

document.addEventListener('keydown', (event) => {
  keysPressed += event.key;
  if (code.substr(0, keysPressed.length)===keysPressed) {
    if (keysPressed === code) {
      alert('correct code entered!');
    } else { return; }
  } 
  keysPressed = "";
})
0 голосов
/ 17 мая 2019

Вы можете использовать так:

var global = {

  alertTrigger: function() {
    var keysToPress = [52,51,53,50], 
        started = false, 
        count = 0;

    $(document).keydown(function(e){
      var reset = function() {
        started = false; 
        count = 0;
        return;
      };

      key = e.keyCode;

      // Begin watching if first key in sequence was pressed.
      if(!started){
        if(key == 38){
          started = true;
        }
      }

      // If we've started, pay attention to key presses, looking for right sequence.
      if (started){

        if (keysToPress[count] == key){
          count++;
        } else {
          // Incorrect key, restart.
          reset();
        }
        if (count == 10){
          // Success!
          alert('Right code entered! Do something cool here.');
          reset();
        }
      } else {
        reset();
      }
    });
  }
}

global.alertTrigger();
...