如何在Javascript中将enter键绑定到回调,而不减慢键入速度?

如何在Javascript中将enter键绑定到回调,而不减慢键入速度?,javascript,jquery,Javascript,Jquery,我需要这个作为聊天室。当用户按enter键时,我想触发回调(发送消息并清除输入字段) 到目前为止,我得到了这个,但是打字速度变慢了: $('#chat_input').keydown(function(event) { if(event.keyCode == '13') { // do something } }); 您将如何对此进行优化 更新:这不是一个巨大的减速,但我能感觉到。我很确定这是我的责任。我一直都有这个问题,所以我认为如果可能的话,是时候找到一种不同的方法了。不,

我需要这个作为聊天室。当用户按enter键时,我想触发回调(发送消息并清除输入字段)

到目前为止,我得到了这个,但是打字速度变慢了:

$('#chat_input').keydown(function(event) {
  if(event.keyCode == '13') {
    // do something
  }
});
您将如何对此进行优化


更新:这不是一个巨大的减速,但我能感觉到。我很确定这是我的责任。我一直都有这个问题,所以我认为如果可能的话,是时候找到一种不同的方法了。

不,你的代码不是这里的罪魁祸首。由于您正在构建聊天系统,因此必须同时运行其他脚本。但这里有另一种方式来研究这个问题

做一个小表格

<form name="chatline" ... >
   <input type="text" />
   <input type="submit" />
</form>
我想试试这个:

document.onkeydown = function(event) {
  if(event.keyCode == '13') {
    // do something
    return false;
  }
};
这将事件侦听器置于DOM图的顶部,使其有第一次响应的机会。返回false还告诉浏览器事件已处理。这将防止它“询问”有关事件的其他元素。此外,抛弃jQuery并直接管理事件将避免执行超出需要的JS


如果这仍然是缓慢的,我会认为有其他逻辑放缓它。如果这是聊天,则在聊天正文中添加/重新排列DOM元素可能会导致显著的浏览器开销。您应该每隔几秒钟左右尝试使用setInterval触发“回车”逻辑。尝试键入(它会随机发送消息),但如果您仍然遇到减速,那一定是其他原因造成的。

我很确定是其他原因造成了减速。因为那个代码不应该成功。很有创意,让我试试。马上回来
document.onkeydown = function(event) {
  if(event.keyCode == '13') {
    // do something
    return false;
  }
};