【问题标题】:How to detect ALL keys released in jQuery?如何检测 jQuery 中释放的所有键?
【发布时间】:2014-05-31 22:53:46
【问题描述】:

我在同一个对象上同时使用 .keydown() 和 .keyup() 事件处理程序,每当键盘上的键被释放时,jquery 就会触发 .keyup() .. 我想阻止 jquery 触发.keyup() 事件,直到所有键都被释放(不仅仅是一个),因为我正在使用多键按下功能......知道吗?

【问题讨论】:

    标签: jquery keydown keyup keyrelease


    【解决方案1】:

    存储 keydown 事件的计数以及 keyup 事件的计数。对于每次迭代,您都需要从 keydown 计数中减去 keyup 计数。当计数达到 0 时,您将拥有与 keydown 一样多的 keyup,然后您可以运行您的函数。

    编辑:这远非完美,但展示了http://jsfiddle.net/K2ny2/1/的概念

    function testKeys(u, d) {
        var delta = u - d;
        console.log(delta);
        if(0 == delta) {
            $('#result').show();
        }
    }
    

    您可能希望包含一些代码以避免有人按住键(重复)时出现问题。

    【讨论】:

    • 我认为它有效@Jay,不幸的是,它没有。由于某些原因,当我按下 keydown 时,Jquery 会不断增加 kd(不仅增加一,而且与我一直按住键一样多)所以当我释放它时,增量不会等于零!我使用 console.log 对其进行了跟踪,看看我得到了什么:(keyup = 1, keydown =1, KeyUp-KeyDown = 0, keyup = 2, keydown =2, KeyUp-KeyDown = 0, keyup = 3, keydown =3 KeyUp-KeyDown = 0, keyup = 4, keydown =6 KeyUp-KeyDown = -2 , keyup = 5 , keydown =6 KeyUp-KeyDown = -1 ) 尝试返回您的演示并按住一段时间,然后松开它们。 ..
    • 我确实指出你需要一些东西来避免按住键@SaajidAkram - 请阅读我回答的最后一句话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多