【问题标题】:Event.keyCode works once but not after on other objectsEvent.keyCode 在其他对象上工作一次但不工作
【发布时间】:2018-11-22 08:50:18
【问题描述】:

我目前正在尝试制作一种聊天系统,首先您可以设置您的用户名,然后发送消息和两个按钮,设置用户名和发送消息将触发按回车键,但是对于出于某种原因,它不会接受消息的输入,首先它显示用户名设置字段

  <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");
    }
 });

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

【问题讨论】:

  • @Teemu 所以我需要防止默认操作并使用 key 而不是 keyCode,我会试一试
  • Umh ...你不能阻止keyup的默认操作,因为它不存在,你需要听keydown ...或提交事件本身。跨度>
  • 我知道我也会解决这个问题
  • 现在我还没有让它工作,关于使用什么来代替 event.key 或类似操作的任何想法? @Teemu

标签: javascript jquery html socket.io


【解决方案1】:

问题已通过更改解决:

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();
        }
     });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多