我需要在这个jQuery函数中加一秒钟,以便在正确填写验证码时,#captchaStatus
在下一步之前显示有足够的延迟(我认为是一秒)该过程(发布的是html)。
必须相当容易,虽然我正在学习jQuery ....想法?感谢。
function validateCaptcha()
{
challengeField = $("input#recaptcha_challenge_field").val();
responseField = $("input#recaptcha_response_field").val();
//alert(challengeField);
//alert(responseField);
//return false;
var html = $.ajax({
type: "POST",
url: "/wp-content/themes/default/ajax.recaptcha.php",
data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
async: false
}).responseText;
if(html == "success")
{
$("#captchaStatus").html("You got it right - I'm sending the email now....");
return true;
}
else
{
$("#captchaStatus").html("Your captcha is incorrect - please try again...");
Recaptcha.reload();
return false;
}
}
答案 0 :(得分:4)
你应该使用回调。看看this jQuery FAQ item on this.
由于异步编程的性质,代码无法正常工作。提供的成功处理程序不会立即调用,而是在将来从服务器收到响应时的某个时间调用。因此,当我们在$ .ajax调用之后立即使用'status'变量时,它的值仍未定义。
getUrlStatus('getStatus.php', function(status) {
alert(status);
});
function getUrlStatus(url, callback) {
$.ajax({
url: url,
complete: function(xhr) {
callback(xhr.status);
}
});
}
答案 1 :(得分:1)
你可以通过动画一些良性属性来伪造延迟,比如不透明度从1到1超过1秒,并在完成回调时提交你的表格......
$("#captchaStatus")
.html("You got it right - I'm sending the email now....")
.animate({opacity: 1.0}, 1000, "linear", function() {
submitMyForm();
});
答案 2 :(得分:0)
秘密是非jQuery JS函数setTimeout。这将在1秒后执行您的操作:
setTimeout(function() {
$("#captchaStatus").html("You got it right - I'm sending the email now....");
}, 1000);