Estoy tratando de agregar al chat una función de "usuario está escribiendo"; chat escrito en PHP + MySQL/Ajax.Función "El usuario está escribiendo" en el chat
cómo debería funcionar:
-cuando mi compañero de chat X comienza a escribir que veo en mi ventana de chat: "X está escribiendo"
-cuando I (denominado Y) estoy escribiendo que ve en su cuadro de chat: "Y está escribiendo" (al igual que Yahoo Messenger).
El código que he probado hasta ahora:
<script type="text/javascript" language="javascript">
var timer = 0;
function reduceTimer() {
timer = timer - 1;
isTyping(true);
}
function isTyping(val) {
if (val == 'true') {
document.getElementById('typing_on').innerHTML = "User is typing...";
} else {
if (timer <= 0) {
document.getElementById('typing_on').innerHTML = "No one is typing -blank space.";
} else {
setTimeout("reduceTimer();", 500);
}
}
}
</script>
<label>
<textarea onkeypress="isTyping('true'); timer=5;" onkeyup="isTyping('false')" name="textarea" id="textarea" cols="45" rows="5"></textarea>
</label>
<div id="typing_on">No one is typing -blank speace.</div>
Preguntas:
Si paro durante unos segundos para pensar en mi ortografía parece que me he dejado de escribir. ¿Hay una manera más relevante y menos complicada de establecer esta función? ¿Existe un código para:
- cuadro de texto no vacío (el usuario presionó una tecla para que comience a escribir) -> Mensaje: El usuario está escribiendo.
- cuadro de texto vacío -> Mensaje: El usuario no está escribiendo.
- cuadro de texto no está vacío, pero el usuario no ha presionado ninguna tecla durante más de 5 segundos -> Mensaje: El usuario no está escribiendo.
Me muestra que estoy escribiendo; cómo podría implementarlo o dónde, para ver en mi cuadro de chat el "usuario de X está escribiendo" y no "yo estoy escribiendo". Lo mismo para el otro usuario, debería recibir un mensaje sobre mí escribiendo/no escribiendo, no sobre él mismo.
Gracias.
+1 para ti ..¿Tienes la solución? ¿Porque también necesito exactamente lo mismo que necesitas? –
¿Dónde pone alguien el código ajax para enviar datos? –