超时计时不检测输入域

Timeout time counting does not detect input field

我在 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');
  }
}

您可以使用此 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;
    });

});

您应该在 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');
    }
});