开发者社区> 问答> 正文

JQUERY 防止连续的键盘按键事件,该怎样实现?

一个左右滚的动态效果,由左、右方向键触发。
怎样在某段时间内连接按键而只触发一次事件?

展开
收起
小旋风柴进 2016-03-24 11:09:23 2137 0
1 条回答
写回答
取消 提交回答
  • var _timer = {};
    function delay_till_last(id, fn, wait) {
        if (_timer[id]) {
            window.clearTimeout(_timer[id]);
            delete _timer[id];
        }
    
        return _timer[id] = window.setTimeout(function() {
            fn();
            delete _timer[id];
        }, wait);
    }
    
    ////////////////////////////////////
    $el.on('click', function() {
        delay_till_last('myclick', function() {
            // run something
        }, 500);
    });

    这个写法可以保证只有最后一次点击被触发,方法就是后一次事件会覆盖前一次事件,如果超过指定时间还没有新的事件,就执行最后一个事件

    delay_till_last()这个函数是我在前端很常用的函数,用在用户可能密集输入的场合下,比如文本框持续输入,等到输入完毕再开始检查

    $input.on('keypress', function() {
        // 用户停止输入300ms后开始检查
        delay_till_last('check_input', function() {
            // 检查文本框内容是否正确
        }, 300);
    });
    2019-07-17 19:12:20
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载