1

我需要调用函数:

  1. 按住键的每一秒(例如,按住 5 秒钟,它应该每秒触发 5 次)。

  2. 当用户释放键 ( keyup) 时,如果少于一秒钟。

事件应该绑定在文档上,而不是文本输入上。

如果第二个语句“有点”有效,首先我会遇到问题,因为 keypress 事件在某些浏览器上不起作用并且 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/

谢谢你的帮助!

4

1 回答 1

2

我已经更新了小提琴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);
}
于 2012-10-14T15:26:18.840 回答