我希望能够捕捉双键按键(例如Char T),以便进行一些特殊处理。我希望按键发生得足够快,不会被解释为两个单独的按键,只是像双击。 任何想法,我可以如何实现这一目标?如何在javascript中捕获双重按键?
9
A
回答
16
当钥匙被击中时,记下时间。然后将它与您记下密钥的时间相比较最后。
如果差异在您的阈值内,则认为它是双倍的。否则,不要。粗糙例如:
var delta = 500;
var lastKeypressTime = 0;
function KeyHandler(event)
{
if (String.fromCharCode(event.charCode).toUpperCase()) == 'T')
{
var thisKeypressTime = new Date();
if (thisKeypressTime - lastKeypressTime <= delta)
{
doDoubleKeypress();
// optional - if we'd rather not detect a triple-press
// as a second double-press, reset the timestamp
thisKeypressTime = 0;
}
lastKeypressTime = thisKeypressTime;
}
}
10
有你,当一个按键事件发生设置为true的变量(也许first_press
),并启动一个计时器,将在设定的时间量后的变量重置为假(但快你想他们按下键)。
在你的按键事件中,如果该变量为真,那么你有一个双击。
实施例:
var first_press = false;
function key_press() {
if(first_press) {
// they have already clicked once, we have a double
do_double_press();
first_press = false;
} else {
// this is their first key press
first_press = true;
// if they don't click again in half a second, reset
window.setTimeout(function() { first_press = false; }, 500);
}
}
相关问题
- 1. 如何在Ruby中捕获按键?
- 2. 如何捕获按键在Matlab uipanel
- 3. Javascript捕获键
- 4. 键盘按键捕获
- 5. jQuery:如何使用live捕获按键()
- 6. 如何捕获ALT + C按键
- 7. 如何捕获外部设备按键?
- 8. 在黑莓键盘上捕获按键
- 9. 捕获在C#中的Shift + Tab按键
- 10. 在java面板中捕获按键
- 11. C#捕获按Ctrl + PageUp键按键
- 12. 如何捕获全球按键在java中
- 13. Python:如何在QT GUI中捕获Ctrl-O键按下?
- 14. 如何在android中捕获长按音量降低键?
- 15. 如何在GtkEntry中捕获回车键
- 16. 如何在C#中捕获删除键?
- 17. 捕获按键信息
- 18. 捕获'删除'键按
- 19. 捕获按免费pascal键?
- 20. 如何捕捉按键?
- 21. 捕获回车键使按键点击使用JavaScript
- 22. 有没有办法在Python中捕获按键,并过滤掉按键重复生成的按键?
- 23. 在C#中捕捉按键#
- 24. 如何在Javascript中捕获404错误?
- 25. 如何在JavaScript中捕获请求?
- 26. 在Android上捕获PhoneGap上的按键
- 27. 如何在C#中捕获javascript HTTP重定向?
- 28. 如何捕获按下Control-Alt-Delete键在QB64
- 29. 如何使用KeyListener只在键被按下时捕获
- 30. 如何在macbook上捕获删除按键
此解决方案使用Ctrl键。他没有说他需要这个(尽管对我来说是有意义的)。 – 2009-08-03 18:36:34
** @ Josh Stodola:**哈!显示我仔细阅读......看到“Char T”,读“Ctrl T”...哎呀! – Shog9 2009-08-03 18:42:17