Я строил функцию автоматической проверки имени пользователя для поля ввода и натолкнулся на эту чрезвычайно странную вещь.
Когда я сделал функцию автоматической проверки как $(document).ready()
,
$(document).ready(function(){
//JohnyP keydowntimer
var timer = null;
$('#username').keydown(function(){
clearTimeout(timer);
var usercheck = $(this).val();
timer = setTimeout(function () {
checkUserName(usercheck);}, 1000);
});
//http://www.itechroom.com
function checkUserName(usercheck){
$('#usercheck').html('<img src="images/ajax-loader.gif" />');
$.post("checkuser.php", {username: usercheck} , function(data){
if (data != '' || data != undefined || data != null){
$('#usercheck').html(data);
}
});
}
})
Независимо от того, где я его разместил (до </head>
или после <body>
),
это не могло сработать.
Однако, когда я выполнил функцию как событие загрузки тела (<body onLoad="loadthis()">
)
function loadthis(){
//JohnyP keydowntimer
var timer = null;
$('#username').keydown(function(){
clearTimeout(timer);
var usercheck = $(this).val();
timer = setTimeout(function () {
checkUserName(usercheck);}, 1000);
});
//http://www.itechroom.com
function checkUserName(usercheck){
$('#usercheck').html('<img src="images/ajax-loader.gif" />');
$.post("checkuser.php", {username: usercheck} , function(data){
if (data != '' || data != undefined || data != null){
$('#usercheck').html(data);
}
});
}
}
Работало, но каждый раз, когда автоматически проверялось, появлялся предыдущий результат.
например. Вводя имя «Arch», предполагается, что сообщение «это имя пользователя уже существует», но вместо этого «это имя пользователя доступно», и следующим результатом будет «это имя пользователя уже существует» независимо от чего-либо. Это всегда предыдущий результат.
Итак, я попытался выполнить функцию check_user_name как событие onblur
, и все заработало нормально, в checkuser.php нет ничего плохого.
Может кто-нибудь объяснить мне, почему это происходит? Я новичок в jQuery .. Большое спасибо !!!