【问题标题】:Keydown function not working with input?Keydown功能不适用于输入?
【发布时间】:2018-03-29 18:57:45
【问题描述】:

我有一个简单的登录页面,我在上面为团队隐藏了一个彩蛋。基本上,它是一个大部分空白页面:

<form id="X" method="post" action="Y">
    <input id="Z" name="Z" type="text" maxlength="99" />
    <button type="submit" class="">Make the Jump</button>
</form>

复活节彩蛋是:

function getFun() {
  var max = 1971;
  var rando = Math.floor(Math.random() * Math.floor(max));
  var getFunURL = 'https://xkcd.now.sh/' + rando;
  var comicHTML;
  var GetComic = $.ajax({
    url: getFunURL,
    method: 'get',
  })
  .done(function(data) {
    var title = data.safe_title;
    var imgURL = data.img;
    comicHTML = '<img src="' + imgURL + '" />';
  })
  .fail(function() {
    comicHTML = '<div>No dice on the comic. It failed to load.</div>';
  })
  .always(function() {
    $("#easterEgg").html(comicHTML);
    $("#easterEgg").show();
  });
}
var allowedKeys = {
  37: 'left',
  38: 'up',
  39: 'right',
  40: 'down',
  65: 'a',
  66: 'b'
};
var konamiCode = ['up', 'up', 'down', 'down', 'left', 'right', 'left', 'right', 'b', 'a'];
var konamiCodePosition = 0;
$(document).keydown(function(e) {
  var key = allowedKeys[e.keyCode];
  var requiredKey = konamiCode[konamiCodePosition];
  if (key == requiredKey) {
    konamiCodePosition++;
    if (konamiCodePosition == konamiCode.length) {
      activateCheats();
      konamiCodePosition = 0;
    }
  } else {
    konamiCodePosition = 0;
  }
});
function activateCheats() {
  getFun();
}

当点击页面的空白区域(从输入中移除光标)并执行 Konami 时,漫画会加载。但是,当光标在输入内部时,执行 Konami 什么也不做。

为什么当光标在输入框内时.keydown 函数不起作用?

【问题讨论】:

  • $(document).on('keydown', '*', function(){...}) 可以吗?

标签: javascript jquery keydown


【解决方案1】:

使用这个

$("#Z").keydown(function(e) {
// write code here
});

【讨论】:

  • 我认为你误解了我的意图。我想要一个按键,无论光标是否在输入内,都能够触发 Konami。此代码会将执行限制为输入内的 keydown,不是吗?
猜你喜欢
  • 2019-11-18
  • 2019-10-22
  • 2019-05-23
  • 1970-01-01
  • 2017-08-07
  • 2014-08-30
  • 2015-11-27
  • 2017-04-05
  • 1970-01-01
相关资源
最近更新 更多