如何在不减慢输入速度的情况下将输入键绑定到Javascript中的回调?

时间:2012-04-05 23:26:54

标签: javascript jquery

我需要这个聊天框。当用户按回车键时,我想触发一个回调(发送消息并清理输入字段)

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

$('#chat_input').keydown(function(event) {
  if(event.keyCode == '13') {
    // do something
  }
});

你会如何优化它?

更新:这不是一个巨大的减速,但我能感受到它。我很确定这段代码是负责任的。我一直有这个问题,所以我认为现在是时候找到一种不同的方式了。

2 个答案:

答案 0 :(得分:3)

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

制作迷你表格

<form name="chatline" ... >
   <input type="text" />
   <input type="submit" />
</form>

然后捕获表单的提交事件,该事件将在浏览器自动输入时触发

$("form").submit(function() {
    //there you go, you caught your enter
});

答案 1 :(得分:0)

我会试试这个:

document.onkeydown = function(event) {
  if(event.keyCode == '13') {
    // do something
    return false;
  }
};

这会将事件侦听器置于DOM图的顶部,为其提供第一次响应的机会。返回 false 还会告诉浏览器该事件已被处理。这将阻止它“询问”有关该事件的其他元素。放弃jQuery并直接管理事件将避免执行比需要更多的JS。

如果这很慢,我不得不认为其他地方的逻辑会减慢速度。如果这是聊天,则在聊天正文中添加/重新排列DOM元素会导致显着的浏览器开销。您应该尝试每隔几秒左右使用 setInterval 来触发'enter'逻辑。尝试输入(它会随机发送消息),但如果你仍然遇到减速,那一定是其他一些逻辑。