Как повторить событие триггера? - PullRequest
0 голосов
/ 28 мая 2019

Я устанавливаю небольшую справочную систему (пошаговую) с помощью html и jquery.Когда вы выполните один шаг, если вы нажмете кнопку «Далее», вы увидите следующий шаг.Я хотел бы позволить пользователю также нажимать клавишу со стрелкой вправо для перемещения вперед по направляющей.Я установил триггер для имитации щелчка, но он срабатывает только один раз.


$(".next").click(function(){
    //function
});

$("body").keydown(function(e) {
  if(e.keyCode == 39) { // right
    $(".next").trigger('click'); // simulate the click on .next
  }
}); // keydown

Здесь демонстрация: http://jsfiddle.net/mlarsen1982/sqrx9gz7/5

Ответы [ 2 ]

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

Подделка ключевых событий, как известно, ненадежна из-за функций безопасности современных браузеров. Более надежным решением было бы извлечь логику события keypress в его собственную функцию и вызвать ее напрямую, например:

$(".next").click(function(){
  showNext();
});

$("body").keydown(function(e) {
  if (e.which === 39) {
    showNext();
  }
});

function showNext() {
  // your logic here...
}
0 голосов
/ 28 мая 2019

Ваш элемент тела, вероятно, сдулся.Попробуйте добавить обработчик события keydown в документ вместо тела.

$(".next").click(function(){
    //function
});

$(document).keydown(function(e) {
  if(e.keyCode == 39) { // right
    $(".next").trigger('click'); // simulate the click on .next
  }
}); // keydown
...