javascript - Jquery Node js的Keydown事件?

标签 javascript jquery node.js

我正在尝试开发聊天应用程序,并且正在学习如何使用 socket.io在nodejs中。现在,当用户按下键盘上的任意键时,我已经能够显示“打字消息”。但是,假设当用户停止输入一会儿或单击 Enter 按钮发送消息时,我想调用 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>';
});

最佳答案

您可以使用setTimeout函数。因此,当用户停止输入时,该事件将在 500 毫秒后触发,您可以在后端正确处理它。当用户开始输入时,超时将被清除,并且事件停止输入将不会发送到后端。

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

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

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

关于javascript - Jquery Node js的Keydown事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824978/

相关文章:

javascript - 在通过 AJAX 传递给 JavaScript 函数的 HTML 字符串中插入 PHP 变量?

javascript - 在React中读取Firestore子集合数据-如何在查询的子集合中设置父ID

javascript - 另一个 React 组件中的新 React 模块

javascript - .width() 返回 4 个像素太多

javascript - JQuery 如果某些文本框为空,则禁用按钮

javascript - 解析错误 : Unexpected token with Browserify and template files

node.js - Ubuntu:端口 80 上的 Http-server 正在启动,但无法从浏览器访问?

node.js - docker 文件/npm : create a sudo user to run npm install

javascript - 类型错误:行未定义

c# - ajax jquery .net 结果为 "The resource cannot be found."