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: /
Thank you for help!
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/kWFUA/
Thank you for help!
Share Improve this question edited Oct 14, 2012 at 15:28 Ram 145k16 gold badges172 silver badges200 bronze badges asked Oct 14, 2012 at 15:12 Marvin3Marvin3 6,0518 gold badges38 silver badges48 bronze badges 1-
Change
keypress
tokeydown
: quirksmode/dom/events/keys.html – Bergi Commented Oct 14, 2012 at 15:28
1 Answer
Reset to default 4I've updated the fiddle http://jsfiddle/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);
}
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744907545a4600347.html
评论列表(0条)