键盘按下被多次触发处理详情(javascript)

键盘按下被多次触发处理详情(javascript),第1张

键盘按下被多次触发处理详情(javascript)
/**
         * @Author elongpaox
         * @Date 2022/5/19
         * @Param time 记录按下时间
         * @Param timeer 记录定时器
         * @Param is_down 记录是否按下
         */
        /**
         * @Author elongpaox
         * 思路:
         *     监听keydown以及keyup事件,因为keydown按下时会触发多次,所以使用is_down记录是否按下用于开关控制。
         *     当按下抬起时间较短时,监听是否还会按下按键,如果还会按下按键就清空定时器,如果不会执行结束方法。
         */
        var time = null
        var timeer = null
        var is_down = false
        document.addEventListener('keydown', function (event) {
            if (event.keyCode == 13) {
                if (!is_down) {
                    is_down = true
                    console.log('抬起');
                    time = new Date().getTime()
                    if (timeer != null) {
                        clearTimeout(timeer)
                        timeer = null
                    }
                }

            }
        })
        document.addEventListener('keyup', function (event) {
            if (event.keyCode == 13) {
                console.log('按下');
                if (new Date().getTime() - time < 1500) {
                    timeer = setTimeout(() => {
                        alert('执行定时器里面的按下')
                    }, 1500)
                    is_down = false
                    return
                }
                is_down = false
                alert('执行定时器外面')

            }
        })

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1296909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存