Keydown事件Jquery节点js?

时间:2017-06-29 12:19:36

标签: javascript jquery node.js

我正在尝试使用聊天应用程序,而我正在学习使用nodejs中的socket.io。现在,当用户按下键盘上的任何键时,我能够显示“输入消息”。但是,让我们说当用户停止输入片刻或点击输入按钮发送消息时,我想调用一个keyup或key release事件。我尝试了以下操作,但它似乎没有更改<em>标记内的文本。即使在用户按下发送后,它仍会显示“用户正在键入”。

message.addEventListener('keypress', function(){
    socket.emit('typing', handle.value);
});

message.addEventListener('keyup', function(){
    feedback.innerHTML = '<p><em></em></p>';
});


socket.on('typing', function(data){
  feedback.innerHTML = '<p><em>' + data + ' is typing a message...</em></p>';
});

1 个答案:

答案 0 :(得分:2)

您可以使用setTimeout功能。因此,当用户停止输入时,事件将被触发,例如在500ms之后,您可以在后端正确处理它。当用户开始输入时,timeout将被清除,而事件stopped typing将不会被发送到后端。

我提供了上述想法的代码。

var timeout;
$("#input").keyup(function() {
  timeout = setTimeout(function(){ socket.emit("stopped typing") }, 500);
});

$("#input").keydown(function() {
  clearTimeout(timeout);
});