从textarea中删除文本,然后按Enter键

时间:2018-06-15 20:22:13

标签: jquery scroll textarea chat

我编写了一个代码,用于发送消息并向下滚动,然后用户按下"输入"键。你可以在下面看到它:

$(document).keypress(function (e) {
    var target = $(e.target);
    if (e.which == 13 && target.is('#message')) {
      message = $('#message').val();
      if (message && /\S/.test(message)) {
        $.post('/users/send', {
          roomId: room.id,
          message: message
        }).done(function (res) {
          var response = JSON.parse(res);
          var lastmsg = JSON.parse(response.messages[response.messages.length - 1]);
          var lastmsgDate = new Date(lastmsg.date);
          if ('{{user.imgUrl}}') {
            $('#messages').append('<div class="container"><div class="my-message"><p>' + message + '</p><small class="date">' +
              lastmsgDate.getHours() + ':' + lastmsgDate.getMinutes() + '</small><img src="' + lastmsg.img + '" alt="avatar"></div></div>');
          } else {
            $('#messages').append('<div class="container"><div class="my-message"><p>' + message + '</p><small class="date">' +
            lastmsgDate.getHours() + ':' + lastmsgDate.getMinutes() + '</small></div></div>');
          }
        });
        var height = $('#messages')[0].scrollHeight;
        $('#messages').scrollTop(height);
        $('#message').val('');
      }
    }
  });

我认为它应该正常工作,但是\ n留在textarea。它也不会向下滚动。我该怎么办?

抱歉我的错误代码

1 个答案:

答案 0 :(得分:1)

问题是:当你点击回车时,你的功能会运行并做它需要做的事情,然后继续执行事件的默认行为(按下按键&#39;输入&#39;),它会跳转线。 (它并没有让#34; \ n&#34;它是在你的功能运行之前创建的)

我所做的是:在检查是否输入且目标是否正确的if语句之后,调用preventDefault()这将阻止通过回车键跳转该行。另外,请致电.focus()以确保焦点位于textarea中,现在正在开始。

&#13;
&#13;
$(document).keypress(function (e) {
    var target = $(e.target);
    if (e.which == 13 && target.is('#message')) {
        e.preventDefault()
        message = $('#message').val();
        if (message && /\S/.test(message)) {  
            //ADD your logic and call here
            //...
            $('#message').val('');                        
            $('#message').focus();
        }
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="message"></textarea>
&#13;
&#13;
&#13;

(我删除了你的AJAX帖子,以便能够在这里创建一个工作片段。)