2017-09-13 6 views
2

mouse click, 키 업과 keypress에 타임 아웃을 재설정하는 방법을 쓰지 만, 입력 필드를 확인하지 않는다는 것을 깨달았습니다. 필드에 활발히 타이핑하면 타임 아웃이됩니다. 다음은 내 코드입니다 :타임 아웃 카운팅이 입력 필드를 감지하지 못함

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

그래서 코드를 같이해야합니다 :

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를 기능을 사용할 수 있습니다

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

는, 실제로 MouseMove 이벤트와 함께 작동하며 타이머를 재설정 있지만 입력 필드 내 키 누르기와, 그것은 oncewhen 문서에서 격리 얻을 입력 필드 내에서 키 누르기 이벤트 내부에있는 것 같다. – Mindan

+0

@Mindan 내부 입력 필드에 등록해야하는 경우에도. 어쩌면 여기에 HTML을 제공하거나 모든 키 누르기를 등록하는 몇 가지 기능을 검색 할 수 있습니다. – PredatorIWD

1

당신 document.ready() 함수 안에 모든 코드가 있어야합니다. 나는 당신의 제안을 시도 PredatorIWD @

$(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'); 
    } 
});