重置设置超时-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)在此之前应该可以解决您的问题