gpt4 book ai didi

javascript cleartimeout()问题

转载 作者:行者123 更新时间:2023-11-28 04:22:27 27 4
gpt4 key购买 nike

我的主要问题是:clearTimeout() 是否会停止计时器并且不在计时器内执行函数?还是只是清除超时并立即执行函数?

这是我的例子

$('input').keyup(function(){
var thisClass = $(this).attr('class').split(" ");
var thisValue = $(this).val();
var thisError = $(this).parent().siblings('.error');
var thisTimeout;
if(thisClass[1] == "letters"){
if(thisValue.length <= 1){
thisTimeout = setTimeout(function(){
thisError.html("You must have at least 2 characters");
thisError.show();
}, 800);
} else {
clearTimeout(thisTimeout);
thisError.hide();
thisError.html("");
}
}

});

这是检查输入框是否至少包含 2 个字符的代码的一部分。目前,如果这段代码有 2 个或更少的字符,它会在 800 毫秒后执行超时。当输入框超过 2 个字符时,如果我打字速度足够快,当我打完时仍然会出现错误框。我可以通过再键入一个字符来清除错误,但如果我快速键入我的名字,则在我完成键入时会出现该错误。

我也有这段代码:

$('input').keydown(function(){
clearTimeout(thisTimeout);
thisError.hide();
});

希望如果我继续输入它会清除错误想法?

最佳答案

您可能会覆盖之前的 setTimeout id。因此,您将无法清除它。

var thisTimeout;
$('input').keyup(function(){
var thisClass = $(this).attr('class').split(" ");
var thisValue = $(this).val();
var thisError = $(this).parent().siblings('.error');

if(thisClass[1] == "letters"){
if(thisValue.length <= 1){
clearTimeout(thisTimeout); // <-- already clear the timeout here before
// starting another one
thisTimeout = setTimeout(function(){
thisError.html("You must have at least 2 characters");
thisError.show();
}, 800);
} else {
clearTimeout(thisTimeout);
thisError.hide();
thisError.html("");
}
}

});

关于javascript cleartimeout()问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com