我需要调用函数:
当钥匙被保持时每秒(例如持有五秒钟,它应该每秒发射5次)。
当用户释放密钥(keyup
)且少于一秒时,
事件应该绑定在文档上,而不是文本输入。
如果第二个声明“有点”有效,首先我遇到问题,因为按键事件不能在某些浏览器上工作,而且keydown会一直触发事件。
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/
谢谢你的帮助!
答案 0 :(得分:1)
我已经更新了小提琴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);
}