Event.keyCode只能在其他对象上使用一次,但不能再使用

时间:2018-11-22 08:50:19

标签: javascript jquery html socket.io

我目前正在尝试创建一种聊天系统,在该系统中,您可以先设置用户名,然后发送消息和两个按钮,再设置用户名和发送消息,但都需要按回车键,但是对于由于某些原因,它不会输入消息,因此首先显示用户名设置字段

  <input id = "name" type = "text" name = "name" value = "" maxlength="20" placeholder = "Aseta käyttäjänimesi tähän">
      <button id="user" type= "button" name="button" onclick = "setUsername()">

这已经设置好了,所以回车就可以设置它

   var input = document.getElementById("name");
   var x = 0;
   input.addEventListener("keyup", function(event) {
      if(event.keyCode === 13) {
        document.getElementById("user").click();

设置用户名后,使用socket.io检查是否设置了用户,将这些字段替换为这些字段:

  socket.on('userSet', function(data) {
     user = data.username;
     document.body.innerHTML = '<div class="wrapper"><div class="messagebox"><input type = "text" id = "message" placeholder = "Kirjoita viestisi tähän">\
     <button type = "button" id="sending" name = "button" onclick = "sendMessage()">Send</button></div>\
     <div id = "message-container"></div></div>';

  });

创建新输入后,我有一段代码应使enter运行该函数以发送消息,

  function sendMessage() {
     var msg = document.getElementById('message').value;
     if(msg) {
        socket.emit('msg', {message: msg, user: user});
        $('#message').val('');
     }
  }

这应该可以使enter发送消息,但它根本不起作用:

var inputtwo = document.getElementById("message");
inputtwo.addEventListener("keyup", function(event) {
  if(event.keyCode === 13) {
    document.getElementById("sending").click();
    alert("Toimii");
    }
 });

没有明显的原因,后者的输入侦听器根本不起作用。

1 个答案:

答案 0 :(得分:0)

问题已通过更改解决:

var inputtwo = document.getElementById("message");
inputtwo.addEventListener("keyup", function(event) {
  if(event.keyCode === 13) {
    document.getElementById("sending").click();
    alert("Toimii");
    }
 });

进入:

  var inputtwo = document.getElementById("message");
    document.addEventListener("keypress", function(event) {
      if (event.defaultPrevented) {
        return;
      }
      var key = event.key || event.keyCode;
      if( key === 'Enter' || key === 13) {
        sendMessage();
        }
     });