检查自上次按键以来的时间

问题描述 投票:2回答:3

我制作的脚本需要能够重定向某人,如果在15秒内未按下某个键,唯一的问题是我不知道如何检查自最后一个按键被按下以来已经过了多少时间。我知道键盘事件但他们等待输入而不是检查何时收到最后一个输入。

任何建议将非常感谢。

javascript html
3个回答
0
投票

尝试这样的事情:

HTML:

<input class="form-control" type="text" id="input">
<input type="hidden" value="0" id="lastKeyPressTime">

使用Javascript:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script>
    function inactivitiy(){
        var lastTime = $('#lastKeyPressTime').val();
        lastTime++;
        $('#lastKeyPressTime').val(lastTime);
        if(lastTime>15){
            //alert('time to redirect !');
            window.location = "http://www.example.com";
        }
        setTimeout(function(){
            inactivitiy();
        }, 1000);
    }
    $(document).ready(function(){
        $('#input').on('keypress', function(){
            $('#lastKeyPressTime').val(0);
        });

        inactivitiy();

    });
</script>

这应该可以解决问题


3
投票

这是一个相当简单的实现,但应该为您提供如何构建自己的指南:

let timeout;
const handleKeyUp = (ev) => {
  clearTimeout(timeout);
  timeout = setTimeout(() => { location.href = '//google.com' }, 15e3);
}

window.addEventListener('keyup', handleKeyUp);

1
投票

let timeout;
$(window).keypress(function(e) {
    if(timeout) {
        clearTimeout(timeout);
        timeout = null;
    }

    timeout = setTimeout(() => console.log(e.key), 1500) 
  // 1.5 sec so you can see the effect quicker
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.