javascript - Do something on key hold and on keyup - Stack Overflow

I need to call function:Every second when key is hold (e.g. for five seconds of holding it should fire

I need to call function:

  1. Every second when key is hold (e.g. for five seconds of holding it should fire 5 times every second).

  2. 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:

  1. Every second when key is hold (e.g. for five seconds of holding it should fire 5 times every second).

  2. 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 to keydown: quirksmode/dom/events/keys.html – Bergi Commented Oct 14, 2012 at 15:28
Add a ment  | 

1 Answer 1

Reset to default 4

I'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

相关推荐

  • javascript - Do something on key hold and on keyup - Stack Overflow

    I need to call function:Every second when key is hold (e.g. for five seconds of holding it should fire

    1天前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信