以下のコードの何が問題なのか、誰か説明してもらえますか? パブリック変数を宣言して setTimeout に設定しています。null でない場合は、再度設定される前にタイムアウトをクリアしています。タイムアウトをクリアしようとすると、未定義になるため、タイムアウトが引き続き実行されます。
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);
});
};