event.PreventDefault() 在文本区域上按下回车键时不起作用

event.PreventDefault() does not work when enter key is pressed on a textarea

我的代码如下。我有一个由 class“.mytext”定义的文本区域,我想防止用户在单击“输入”时转到新行。但即使在 event.preventDeafult() 之后,回车仍会将用户带到文本区域中的下一行。我在这里遗漏了什么吗?

$(document).off("keyup", ".mytext");
$(document).on("keyup", ".mytext", function(event) {
  if (event.which == 13) {
    event.preventDefault();
    $(this).siblings("#send_msg").trigger("click");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea class="mytext"></textarea>

当你必须键入时已经太晚了,换行符就在那里。

这次为 keypress 插入另一个侦听器并防止此时出现默认 - 当然,同时做任何您想做的关于模拟点击的事情,这意味着换行符不会在那时的文本字符串。

$(document).off("keyup", ".mytext");
$(document).on("keypress", ".mytext", function(event) {
  if (event.which == 13) {
    event.preventDefault();
    $(this).siblings("#send_msg").trigger("click");
  }
});
$(document).on("keyup", ".mytext", function(event) {
//this should now be redundant
  if (event.which == 13) {
    event.preventDefault();
    $(this).siblings("#send_msg").trigger("click");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea class="mytext"></textarea>