【发布时间】: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