我得到了这个代码的提示:
$(document).click(function() {
$('#accept').hide();
$('#error').hide();
});
function newnick(){
var newnick = $('#newnick').val();
if(newnick.match(/^[a-z\d\-_\s]+$/i))
{
}
else
{
// THIS ISN'T WORKING:
var scrol = $(document).scrollTop() + 10;
$("#error").css({'margin-top':scrol + 'px'})
$("#error").html("Nope");
$("#error").show();
return false;
}
$.ajax({
type: 'post',
url: 'doedit.php',
data: {mach: "username", username: newnick},
success: function(data) {
if(data == 0)
{
// BUT THIS WORKS:
var scrol = $(document).scrollTop() + 10;
$("#error").css({'margin-top':scrol + 'px'})
$("#error").html("Dieser nickname ist bereits vergeben!");
$("#error").show();
}
else
{
// AND THIS WORKS:
var scrol = $(document).scrollTop() + 10;
$("#accept").css({'margin-top':scrol + 'px'})
$("#accept").html("Nickname gespeichert");
$("#accept").show();
}
}
});
}
正如您所看到的,我多次使用它,但它仅适用于AJAX,因为我也是这样测试的:
$(document).click(function() {
$('#accept').hide();
$('#error').hide();
});
function newnick(){
var scrol = $(document).scrollTop() + 10;
$("#error").css({'margin-top':scrol + 'px'})
$("#error").html("Nope");
$("#error").show();
}
它不起作用。
当我删除时:
$(document).click(function() {
$('#accept').hide();
$('#error').hide();
});
然后提示显示但我无法点击它。这有什么不对?
答案 0 :(得分:0)
由于javascript是异步的,因此在函数$(document).click(function(){});
之前不会始终调用函数newnick()
。
如果在函数show()
之前调用函数hide()
,则"错误"将被隐藏。由于AJAX函数需要更长时间,函数show()
很可能在函数$(document).click(function(){});
之后调用。
基本上,你必须等到函数$(document).click(function(){});
完成才能调用函数newnick()