【问题标题】:jQuery - Executing code when a key is pressed and reverting it back to normal when it's releasedjQuery - 当一个键被按下时执行代码并在它被释放时恢复正常
【发布时间】:2017-05-15 07:09:33
【问题描述】:

这个想法是将普通键与修饰键链接,如果它们碰巧被按下。 cCtrl c

以下作品:

var inc = 10;

$(document).keydown(function(e) {
    switch(e.which) {
        case 16: // shift
            inc = 100;

            break;

        case 17: // ctrl
            inc = 1;

            break;
    }
});

$(document).keyup(function() {
    inc = 10;
});

当按键被按下时变量被设置为相应的值,当它被释放时它恢复正常。但我想知道是否:

A - 您可以等待第一个函数完成,然后执行使其恢复正常的代码

B - 如果有某种内置方法可以将其恢复为原始值而无需手动设置

【问题讨论】:

    标签: javascript jquery function events triggers


    【解决方案1】:

    如果您想知道 CTRLSHIFT 键是否用作修饰符,请不要查找它的键码。而是使用事件的ctrlKeyshiftKey 属性。试试这个:

    var inc = 10;
    $('input').val(inc);
      
    $(document).keydown(function(e) {
      if (e.shiftKey) {
        inc = 100;
      } else if (e.ctrlKey) {
        inc = 1;
      }
      
      $('input').val(inc);
    });
    
    $(document).keyup(function() {
      inc = 10;
      
      $('input').val(inc);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="text" />

    回答您的问题:

    A - 您可以等待第一个函数完成,然后执行使其恢复正常的代码

    B - 如果有某种内置方法可以将其恢复为原始值而无需手动设置

    两者的答案是否定的。您使用的模式是最好的方法。

    【讨论】:

    • This blogpost 说你可以“缓存选择器”并且它适用于鼠标事件,有什么区别?
    • 该链接指向 404
    • 刷新页面一次,文章就会加载。我不知道,问他为什么
    • 确实如此 - 非常奇怪。至于缓存选择器 - 这是关于将 jQuery 对象保存在内存中。它与事件处理程序无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多