您好,我尝试在用户开始输入时发送消息,并在用户停止输入时再次发送消息...问题是在用户停止输入后,它会多次发送stopTyping
消息..我发现问题在于keyup
函数中的计时器...它没有重置一半..我猜......
var typingTimer = '';
var hahahehehoho = "1"; //timer identifier
var doneTypingInterval = 10000; //time in ms, 5 second for example
//on keyup, start the countdown
$('#messageText').keyup(function(){
typingTimer = setTimeout(doneTyping, doneTypingInterval);
});
//on keydown, clear the countdown
$('#messageText').keydown(function(){
clearTimeout(typingTimer);
if(hahahehehoho == "1"){
startTyping();
hahahehehoho = "2";
}
});
我如何解决这个问题蚂蚁的帮助将不胜感激...在此先感谢.. :)哦,还有一件事,我使用了Run javascript function when user finishes typing instead of on key up?的代码
答案 0 :(得分:2)
在keyup
处理程序中,您需要取消超时。
keyup
会在每次击键时被触发,因此如果您输入的速度足够快,则会对doneTyping
进行更多调用。
答案 1 :(得分:2)
原因在于:
typingTimer = setTimeout(doneTyping, doneTypingInterval);
您正在创建新的超时,而不会清除旧的超时。最后,您只删除了上一次超时。
添加:
在此之前 if (typingTimer) window.clearTimeout(typingTimer);
应解决您的问题