gpt4 book ai didi

JavaScript clearTimeout 返回未定义

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

有人可以向我解释一下我下面的代码有什么问题吗?我声明一个公共(public)变量并将其设置为 setTimeout,如果不为空,则在再次设置之前清除超时。当我尝试清除超时时,我得到了未定义的信息,因此超时继续运行。

var usernameCheckTimeout = null;

$(document).ready(function(){
$("#username").on("keyup", function(e){
if($(this).val().length >= 6)
{
if(usernameCheckTimeout != null)
{
clearTimeout(usernameCheckTimeout);
}
usernameCheckTimeout = setTimeout(isUsernameAvailable($(this).val()), 1000);
}
});
});

function isUsernameAvailable(username)
{
$.ajax({
url : "/account/username-check",
method : "POST",
dataType : 'json',
data : {
'username' : username
}
}).done(function(data) {
console.log(data);
});
};

最佳答案

您不需要进行 null 检查,还需要在 this 周围创建一个闭包,否则 this 将引用不是您认为的 this 实际上是。

var usernameCheckTimeout;
$("#username").on("keyup", function (e) {
if ($(this).val().length >= 6) {
clearTimeout(usernameCheckTimeout);
var that = this;
usernameCheckTimeout = setTimeout(function () {
isUsernameAvailable($(that).val();
}, 1000);
}
});

一些jsfiddle一如既往地爱。

关于JavaScript clearTimeout 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15705011/

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