【问题标题】:event.PreventDefault() does not work when enter key is pressed on a textarea [duplicate]在文本区域上按下回车键时 event.PreventDefault() 不起作用[重复]
【发布时间】:2021-04-05 06:16:01
【问题描述】:

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

$(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>

【问题讨论】:

  • 我给你做了一个sn-p。请添加缺少的相关 HTML
  • $(document).off("keyup", ".mytext"); 不需要
  • ID 必须是唯一的,因此您可以使用 $("#send_msg").trigger("click") - 如果您有更多这些,请更改为 class 并包装在 div 中并执行 $(this).closest('div').find('.send_msg').trigger('click')
  • @mplungjan 不,它是唯一的 ID。代码的那部分没有问题。虽然,我不明白为什么这个问题被标记为重复。您添加的链接,该问题的解决方案在我的情况下不起作用。因此,我的问题与该链接的问题不同。
  • 这与您接受的答案相同

标签: html css textarea preventdefault enter


【解决方案1】:

当您必须键入时为时已晚,换行符就在那里。

这次为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>

【讨论】:

  • 这行得通。非常感谢..!
猜你喜欢
  • 2021-05-14
  • 2011-04-10
  • 2020-08-02
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 2010-10-21
相关资源
最近更新 更多