javascript - 在按住按键和松开按键时执行某些操作

标签 javascript jquery

我需要调用函数:

  1. 按住按键时每秒(例如按住五秒,每秒应触发 5 次)。

  2. 当用户释放按键 (keyup) 时,并且时间少于一秒。

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

如果第二个语句“有点”有效,那么第一个语句我会遇到问题,因为按键事件在某些浏览器上不起作用,并且按键事件始终触发事件。

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/

感谢您的帮助!

最佳答案

我已经更新了 fiddle 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);
}

关于javascript - 在按住按键和松开按键时执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883483/

相关文章:

javascript - 用于检查输入是否与固定电话区号匹配的正则表达式

asp.net - 如何确定 JavaScript 中 RadioButtonList 的 SelectedValue?

javascript - 表单未检测下拉列表中动态选择/分配的值

javascript - KNockout JS - 加载外部模板

javascript - 是否可以将外部 JS 脚本加载到 blob 中?

javascript - 如何在 jqGrid 中填充哪些单元格未被编辑的单元格

jquery - 使用 PhoneGap/Telerik Appbuilder 混合应用程序在 iPhone/Android 日历中添加事件?

javascript - XRM setDisable() 在 IE 以外的浏览器上不起作用

javascript - 使用 xpath 选择属性和内容?

javascript - 如何在 JSON 中使用占位符