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

时间:2019-02-13 13:37:28

标签: javascript html

我正在编写一个脚本,该脚本要求如果15秒钟内没有按任何键,就可以重定向某人,唯一的问题是我不知道如何检查自从按下最后一个键以来已经过去了多少时间。我知道键盘事件,但是它们等待输入,而不是检查何时接收到最后一个输入。

任何建议将不胜感激。

3 个答案:

答案 0 :(得分:3)

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

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

window.addEventListener('keyup', handleKeyUp);

答案 1 :(得分: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>

答案 2 :(得分: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>

这应该可以解决问题