【发布时间】:2014-12-31 15:09:25
【问题描述】:
我想在我的聊天系统中显示用户正在输入,无论用户何时输入。我是通过keypress 事件做到的:
$('#m').keypress(function(){
socket.emit('typing', 'user is typing...');
});
但是我不希望它在每次按下任何键时都发出keypress 事件。因此,每当按下某个键时,都会发出 keypress 事件,然后禁用 keypress 事件 3 秒,这样就不会再传递 user is typing 消息了。如果没有按下任何键,则再次等待 3 秒钟,然后显示用户 idle。这是到目前为止的代码:
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 秒后显示用户正在输入,并在 3 秒后再次显示用户空闲。但是,如果我按任意键,它不会再显示 用户正在输入。如果您能帮我解决这个问题,我将不胜感激。
【问题讨论】:
-
$('#m').bind('keypress');缺少处理函数
标签: javascript jquery socket.io jquery-events