我目前正在尝试创建一种聊天系统,在该系统中,您可以先设置用户名,然后发送消息和两个按钮,再设置用户名和发送消息,但都需要按回车键,但是对于由于某些原因,它不会输入消息,因此首先显示用户名设置字段
<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");
}
});
没有明显的原因,后者的输入侦听器根本不起作用。
答案 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();
}
});