我需要调用函数:
按住按键时每秒(例如按住五秒,每秒应触发 5 次)。
当用户释放按键 (
keyup
) 时,并且时间少于一秒。
事件应该绑定(bind)在文档上,而不是文本输入上。
如果第二个语句“有点”有效,那么第一个语句我会遇到问题,因为按键事件在某些浏览器上不起作用,并且按键事件始终触发事件。
var interval;
$(document).on('keypress', function(e) {
console.log('keypress');
interval = setInterval(function() {
doSomething(e.keyCode);
}, 1000);
}).on('keyup', function(e) {
console.log('keyup');
if(interval === 0) {
doSomething(e.keyCode);
}
clearInterval(interval);
interval = 0;
});
function doSomething(keyCode) {
console.log(keyCode);
}
jsFiddle:http://jsfiddle.net/kWFUA/
感谢您的帮助!
最佳答案
我已经更新了 fiddle http://jsfiddle.net/kWFUA/3/
var interval;
var called = false;
$(document).on('keydown', function(e) {
if(interval == null) {
console.log('keydown');
called = false;
interval = setInterval(function() {
doSomething(e.keyCode);
called = true;
}, 1000);
}
}).on('keyup', function(e) {
console.log('keyup');
clearInterval(interval);
interval = null;
if(!called)
doSomething(e.keyCode);
});
function doSomething(keyCode) {
console.log(keyCode);
}
关于javascript - 在按住按键和松开按键时执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883483/