I need to call function:
-
Every second when key is hold (e.g. for five seconds of holding it should fire 5 times every second).
-
When user releases key (
keyup) and if less then one second passed.
Events should be binded on document, not on text input.
If second statement “kinda” works, with first I have problems as keypress event isn’t working on some browsers and keydown fires event all the time.
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/
Thank you for help!
I’ve updated the fiddle http://jsfiddle.net/kWFUA/3/