javascript - Keydown 效果,如果 keyup 在效果完成之前发出警报

标签 javascript jquery keydown keyup

我的目标:在效果发生时按住空格键(模拟指纹扫描)。如果用户在效果完成之前释放键,我想显示一条确认消息。 keydown 部分工作正常并继续执行“处理”功能,但如果在效果完成之前释放它,则不会在 keyup 上显示错误消息。这就是我的...

var active = false;

$(document).one("keydown", function(e) {
    if ((e.keyCode == 32) && (active == false)) {
      active = true;
      $(".panel_1").slideDown(5000, function() {
        active = false;
        $(".panel_1").slideUp(2000, function() {process(); })
      }); 
    }
});

$(document).one("keyup",function(e) {
    if ((e.keyCode == 32) && (active == true)) {
      var r=confirm("Oops! You must HOLD down the space key until scan is complete. Press OK to try again, or Cancel to return to homepage.");
      if (r==true) {
        reset();
      }
      else {
        window.location.replace("home.html");
      } 
    }
});

最佳答案

确认您在第一个 slideDown 动画期间释放了按键。根据您的代码,一旦它开始向上滑动,您的 active 就会设置为 false,然后将其设置为不会触发 keyup 事件。

另请注意,我建议在 JavaScript 中使用 triple =。

关于javascript - Keydown 效果,如果 keyup 在效果完成之前发出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361390/

相关文章:

javascript - 如何使元素的高度随着添加的每个子元素而增加

c# - 未触发 KeyDown 事件

javascript - 无法使用 .keyup, .keydown ,.keypress 实现解决方案

javascript - 为什么有时在 html 中调用 javascript 函数时会看到冒号?

javascript - 隐藏/封装 JavaScript 逻辑

Javascript 将函数绑定(bind)到 Ajax 加载事件

javascript - 动态创建的 <th> get 的较低位置为什么?

javascript - 对象名称可以是数字吗?

javascript - 如何从 json 对象中删除 $promise 和 $resolved

wpf - 捕获在 Powershell 中运行的 XAML 文本框中的 Enter 键