jQuery нажатие клавиш не соответствует - PullRequest
0 голосов
/ 22 января 2020

При нажатии клавиши ES C я хочу найти атрибут href ссылки и перенаправить на нее. Я использую следующий код, он работает, однако он не согласован , и я не могу понять, почему.

На странице есть значения формы ввода, если курсор находится в некоторой части ввода поле и клавиша ES C нажата, значит она не работает. Однако, как ни странно, если я добавляю оповещение в коде jquery, то оно показывает оповещение и также перенаправляет.

Как я могу сделать так, чтобы оно перенаправлялось, даже когда часть поля ввода сфокусирована?

 $(document).ready(function() {
   $(document).keydown(function(e) {
     var code = (e.keyCode ? e.keyCode : e.charCode);
     if (e.keyCode == 27) {
       var href = $('a').attr('href');
       alert(href); //notice this alert
       if (href) {
         $(location).attr("href", href);
       }
     }
   });
 });

В приведенном выше коде обратите внимание на предупреждение . Он работает, если есть предупреждение, если я удалю эту строку, он не работает. Вот демо. (Я проверял только на Firefox).

JSFiddle: https://jsfiddle.net/3q56atsm/

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Я столкнулся с той же проблемой, надеюсь, она будет работать

$(document).ready(function() {
        $(document).keydown(function(e) {
          keyCode(e);
        });
  });

  function keyCode(event) {
    var x = event.keyCode;
    if (x == 27) {
      alert ("You pressed the Escape key!");
    }else{
      alert("Other Key");
    }
  }
0 голосов
/ 22 января 2020

Попробуйте это.

$(document).ready(function() {
    $(document).keydown(function(e) {
        var code = (e.keyCode ? e.keyCode : e.charCode);
        if (e.keyCode == 27) {
            var href = $('a').attr('href');
            if (href) {
                $(location).attr("href", href);
            }
        }
    });
});
...