2017-09-13 27 views
2

我写的方法对mouse click,KEYUP和keypress复位超时,但我意识到,它不会对输入字段检查,所以当我积极字段会超时打字。 这里是我的代码:超时时间计数未检测到输入字段

var idleInterval = setInterval(timerIncrement, 10000); 
var idleTime = 0; 
$(document).ready(function() { 
    //Increment the idle time counter every minute. 
    //Zero the idle timer on mouse movement. 
    $(this).mousemove(function (e) { 
    idleTime = 0; 
    }); 
    $(this).keypress(function (e) { 
    idleTime = 0; 
    }); 
    $(this).keyup(function (e) { 
    idleTime = 0; 
    }); 
}); 

function timerIncrement() { 
    idleTime = idleTime + 1; 
    if (idleTime > 4) { 
    window.location.replace('/timeout.aspx'); 
    } 
} 

回答

0

您可以使用此jQuery的功能检测网页上的所有按键:

$(document).on("keypress", function (e) { 
    idleTime = 0; 
}); 

所以,你的代码应该是这样的:

var idleInterval = setInterval(timerIncrement, 10000); 
var idleTime = 0; 

function timerIncrement() { 
    idleTime = idleTime + 1; 
    if (idleTime > 4) { 
     window.location.replace('/timeout.aspx'); 
    } 
} 

$(document).ready(function() { 

    $(this).mousemove(function (e) { 
     idleTime = 0; 
    }); 
    $(document).on("keypress", function (e) { 
     idleTime = 0; 
    }); 

}); 
+0

@ PredatorIWD我想你的建议,它实际上与鼠标移动工作,它复位定时器,而与输入字段内按键,好像oncewhen是按键事件输入区域内从文档中分离得到里面。 – Mindan

+0

@Mindan即使在输入栏里面也应该注册它。也许你可以在这里为它提供html,或者搜索更多注册所有按键的函数。 – PredatorIWD

1

你应该拥有document.ready()函数中的所有代码。

$(document).ready(function() { 
    var idleInterval = setInterval(timerIncrement, 10000); 
    var idleTime = 0; 

    $(document).on('keyup', function() { 
     console.log('Keyup Detected'); 
     idleTime = 0; 
    }); 

    function timerIncrement() { 
     idleTime++; 

     if (idleTime > 4) 
      window.location.replace('/timeout.aspx'); 
    } 
});