我知道如何通过这种方式检测Javascript中的按键:
{{1}}
我想知道是否有可能我们可以检测箭头按键的长度仅适用于我需要处理的滚动功能。
由于
答案 0 :(得分:1)
抓住keydown
事件,启动计时器,并在keyup
事件上停止计时器。
(function() {
var PRESSING = false;
var timer;
$(document).keydown(function(e) {
//Ignore repeated event to be fired.
//otherwise it will reset timer.
if(e.which === 38 && PRESSING) {
return e.preventDefault();
}
//Start timer
timer = Date.now();
console.log("Key press");
PRESSING = true;
});
$(document).keyup(function(e) {
//On arrow key up, stop timer and log result
if(e.which === 38) {
PRESSING = false;
var time = Date.now() - timer;
console.log("Key pressed for " + time/1000+ "sec");
}
e.preventDefault();
})
}());
答案 1 :(得分:0)
根据我的理解,如果你正在制作滚动功能,你应该开始滚动keydown
并停在keyup
上。 keyup事件可以在keydown事件中设置。
提供一个jsfiddle,我可以帮助你。
答案 2 :(得分:0)
var pressed = null;
$(element).on('keydown', function(event) {
pressed = +new Date();
// do whatever else you need upon key down
});
$(element).on('keyup', function(event) {
var duration = +new Date() - pressed;
pressed = null;
// do whatever you need to do based on the duration of the press
});