функция нажатия клавиш назначается двум клавишам, но срабатывает при нажатии любой клавиши - PullRequest
0 голосов
/ 15 января 2019

В: Я назначил нажатие клавиш ТОЛЬКО на 2 клавиши, однако, если я нажимаю любую клавишу клавиатуры, скрипт запускается. Может кто-нибудь сказать мне, если это проблема форматирования, просто посмотрев на скрипт?

Эта клавиша jQuery работает для меня, когда при нажатии стрелки вправо модал переходит к следующему, а при нажатии левой клавиши запускается предыдущий модал.

$("div[id^='myModal']").keydown(function(e){
    var currentModal = $(this);
    if (e.which == 39){
    }else{
  currentModal.modal('hide');
  currentModal.closest("div[id^='myModal']").prevAll("div[id^='myModal']").first().modal('show');  
    }
     var currentModal = $(this);
    if (e.which == 37){
    }else{
  currentModal.modal('hide');
  currentModal.closest("div[id^='myModal']").nextAll("div[id^='myModal']").first().modal('show');
    }
});

1 Ответ

0 голосов
/ 15 января 2019

Проблемы возникают при использовании вами операторов if. Мне кажется, что вы должны изменить свой код:

$("div[id^='myModal']").keydown(function(e){
        var currentModal = $(this);
        if (e.which === 39) {
          currentModal.modal('hide');
          currentModal.closest("div[id^='myModal']").prevAll("div[id^='myModal']").first().modal('show');  
        } else if (e.which === 37) {
          currentModal.modal('hide');
          currentModal.closest("div[id^='myModal']").nextAll("div[id^='myModal']").first().modal('show');
        }
    });

По сути, ваш код говорит: «Если нажата левая клавиша со стрелкой, ничего не делать, иначе сделать что-то с предыдущим модальным», а затем «Если нажата правая клавиша со стрелкой, ничего не делать, в противном случае сделать что-то со следующим модальным» .

...