Meine Funktion "Benutzer tippt" entfernt nicht die "Eingabe", wenn der Benutzer die Eingabetaste drückt. Auch wenn ein Benutzer die Nachricht sendet, wird die Meldung "Wird getippt" weiterhin angezeigt, bis der Timer abgelaufen ist.Wie man die Funktion "Wird eintippen" stoppt, wenn der Benutzer eine Nachricht sendet
Irgendwelche Ideen?
Dies ist mein Code:
clientseitige
// Detect typing
function timeoutFunction() {
typing = false;
socket.emit("typing", false);
socket.emit("notTyping", true)
}
$("#msg").keypress(function(e){
if (e.which !== 13) {
if (typing === false && $("#msg").is(":focus")) {
typing = true;
socket.emit("typing", true);
} else {
clearTimeout(timeout);
timeout = setTimeout(timeoutFunction, 1500);
}
}
else if(e.which == 13 && $("#msg").val() !== "") {
$("#"+data.person+"").remove();
}
});
socket.on("isTyping", function(data) {
if (data.isTyping) {
if ($("#"+data.person+"").length === 0) {
socket.emit("checkTypingFunction");
$("#chat").append("<div id='"+ data.person +"'><span class='grey'>" + data.person + " is typing...</div>");
timeout = setTimeout(timeoutFunction, 1500);
}
} else {
$("#"+data.person+"").remove();
}
});
serverseitige:
client.on("typing", function(data) {
if (typeof people[client.id] !== "undefined")
socket.sockets.in(client.room).emit("isTyping", {isTyping: data, person: people[client.id].name});
client.broadcast.to(client.room).emit("isTyping", {isTyping: data, person: people[client.id].name});
console.log("Someone is typing");
});
würde ich einen befristeten Zeitraum halten, wenn der Benutzer nicht für so viel Zeit ('keyup') eingeben, rufen Sie' „notTyping“ ' – Rayon
, das bereits funktioniert. Ich brauche die Funktion zu stoppen, wenn der Benutzer eingibt (sendet die Nachricht) – JonasSH
Versuchen Sie https://jsfiddle.net/rayon_1990/8ps2wcur/1/ – Rayon