Как при нажатии "Enter" сделать отправку сообщения?

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2023

Хочу при нажатии на “Enter” сделать отправку сообщения.

document.addEventListener('DOMContentLoaded', function() {
  const messagesContainer = document.querySelector("#messages_container");
  const messageInput = document.querySelector('[name=message_input]');
  const sendMessageButton = document.querySelector('[name=send_message_button]');
  let websocketClient = new WebSocket("ws://localhost:12345");
  websocketClient.onopen = () => {
    console.log("Client conntected!");
    websocketClient.send("Hello!");
    sendMessageButton.onclick = () => {
      websocketClient.send(messageInput.value);
      messageInput.value = "";
    };
  };
  websocketClient.onmessage = (message) => {
    const newMessage = document.createElement('div');
    newMessage.innerHTML = message.data;
    messagesContainer.appendChild(newMessage);
    console.log(message.data);
  }
  document.onkeydown = () => {
    if (e.keyCode === 13) {
      messagesContainer.submit();
    }
  }
}, false);
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Version1</title>
</head>

<body>
  <div id="messages_container" style="border: 2px solid"></div>
  <div>
    <input type="text" name="message_input">
    <input type="button" name="send_message_button" value="Send message">
  </div>
  <div></div>
</body>

</html>

Я написал код для отправки на "Enter", но ничего не происходит, помогите пожалуйста

Ответы

▲ 0Принят

Вы не передаете в событие нажатия кнопки само событие, чтобы можно было считать код нажатой клавиши:

document.onkeydown = (e) => {
    if(e.key === 'Enter') {
        websocketClient.send(messageInput.value);
    }
}

Свойство keyCode устарело, от него лучше отказаться.