重置设置超时-javascript
您好,我正在尝试在用户开始键入时发送消息,并在用户停止键入时再次发送消息。。。问题在于,用户停止键入后,它会多次发送重置设置超时-javascript,javascript,jquery,Javascript,Jquery,您好,我正在尝试在用户开始键入时发送消息,并在用户停止键入时再次发送消息。。。问题在于,用户停止键入后,它会多次发送停止键入消息。。我发现问题出在keyup功能中的计时器上。。。它不会中途复位。。我想 var typingTimer = ''; var hahahehehoho = "1"; //timer identifier var doneTypingInterval = 10000; //time in ms, 5 second for
停止键入
消息。。我发现问题出在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";
}
});
我该如何解决这个问题?如果您能提供帮助,我们将不胜感激。。。提前感谢……)哦,还有一件事,我在
键控处理程序中使用了中的代码,您需要取消超时
keyup
在每次按键时都会触发,因此如果您键入的速度足够快,您将在keyup
处理程序中排队调用更多的donetying
,您需要取消超时
keyup
在每次按键时都会触发,因此,如果您键入的速度足够快,您将排队等待更多调用doneTyping
,原因是:
typingTimer=setTimeout(doneTyping,doneTypingInterval)代码>
您正在创建新的超时,而没有清除旧的超时。最后,您只删除最后一个超时
添加:
if(typingTimer)窗口。clearTimeout(typingTimer)代码>在此之前应该可以解决您的问题原因在于:
typingTimer=setTimeout(doneTyping,doneTypingInterval)代码>
您正在创建新的超时,而没有清除旧的超时。最后,您只删除最后一个超时
添加:
if(typingTimer)窗口。clearTimeout(typingTimer)代码>在此之前应该可以解决您的问题