2014-12-31 1 views
2

사용자가 내 채팅 시스템에을 입력하면 표시됩니다.이벤트를 사용 안함으로 설정하고 다시 jquery에서 이벤트를 사용하도록 설정하십시오.

$('#m').keypress(function(){ 
    socket.emit('typing', 'user is typing...'); 
}); 

그러나 나는 그것이 매번 어떤 키를 누를 때 키 누르기 이벤트를 방출하지 않으 : 나는 keypress 이벤트에 의해 그것을했다. 따라서 키가 누를 때마다 keypress 이벤트를 내 보냅니다. 그런 다음 사용자가 메시지를 전달하지 않도록 키 누르기 이벤트를 3 초 동안 비활성화하십시오. 사용자가 유휴임을 표시하는 것보다 키를 누르지 않으면 3 초 동안 다시 기다립니다. 이것들은 지금까지의 코드입니다.

index.html을이 :

var typing; 
typing = $('#m').on('keypress',function(){ 

    $('#m').unbind('keypress'); 

    var timeout; 

    timeout = setTimeout(function() { 
     socket.emit('typing', 'user is typing'); 
     setTimeout(function(){ 
     socket.emit('typing', 'idle'); 
     }, 3000); 
    }, 3000); 
    $('#m').bind('keypress'); 
}); 

그것은 사용자가 3 초 후에을 입력하고 사용자가 유휴 것을 다시 후 삼초 쇼 보여 않습니다. 그러나 아무 키나 누르면이 더 이상 입력되지 않는다는 메시지가 에 표시되지 않습니다. 이 문제를 해결할 수 있다면 정말 감사 할 것입니다. 고맙습니다.

+0

'$ ('#의 m') 바인드 ('키 누름이') '이 핸들러 함수 – charlietfl

답변

1

것을 시도해보십시오.

var disableKeyPress = false; 

var typing = $('#m').on('keypress', function() { 
    if (!disableKeyPress) { 
    disableKeyPress = true; 
    socket.emit('typing', 'user is typing'); 

    setTimeout(function() { 
     disableKeyPress = false; 

     setTimeout(function() { 
     if (!disableKeyPress) { 
      socket.emit('typing', 'idle'); 
     } 
     }, 3000); 
    }, 3000); 
    } 
}); 
+0

완벽 없습니다! 일. 고마워.] – Robin

+0

내가 너를 도울 수 있으면 다행이야! – Gnucki

관련 문제