<textarea> 标签内存在换行符问题

今天在做一个功能,模仿 QQ 发送消息的形式,可以按下 Enter 或者 Ctrl+Enter 发送消息。但是做的过程中发现一个问题,按 Enter 键发送消息后,<textarea>标签里的消息内容可以被发送,但是发送之后的 textarea 区域却始终会显示一个换行。而使用 Ctrl+Enter 发送消息不会出现问题。(发送消息的方法在发送之后会清空 textarea 里的内容并获取焦点)。代码及效果如下截图:

<textarea class="form-control" rows="5" id="content" placeholder="send message"></textarea>

处理按键方法:

         var send_method = 'e';
         $('textarea').keydown(function(e) {
           if (send_method == 'e') {
            if (e.keyCode == 13) {
              onSubmit(); //发送消息
            }
           } else {
            if (e.ctrlKey && e.keyCode == 13) {
              onSubmit();
            }
           }
         });

发送消息的方法:

function onSubmit() {
    //发送消息
     $('textarea').val('');
     $('textarea').focus();
}

使用 Enter 发送后效果:
图片描述

使用 Ctrl+Enter 发送后:
图片描述

所以我不清楚为什么使用 Enter 发送后始终会有一个换行以及如何去掉?

阅读 3.2k
2 个回答
$('textarea').keypress(function(event) {
  // Check the keyCode and if the user pressed Enter (code = 13) 
  // disable it
  if (event.keyCode == 13) {
    event.preventDefault();
  }
  
  $(this).text('hello');
});

测试

请了解keydownkeypresskeyup这三个事件的触发时机。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题