関数を呼び出す必要があります:
キーが押されているときは毎秒(たとえば、5秒間押し続けると、毎秒5回発射されます)。
ユーザーがキー(
keyup
)を離したとき、および1秒未満が経過したとき。
イベントは、テキスト入力ではなく、ドキュメントにバインドする必要があります。
2番目のステートメント「kinda」が機能する場合、最初に問題が発生します。一部のブラウザーで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/
助けてくれてありがとう!