我正在使用 jQuery validate 和我的网站的注册表单,底部有一个 reCaptcha。这是检查表单错误的脚本(仅编辑到相关部分):
$(document).ready(function() {
jQuery.validator.addMethod("checkCaptcha", function() {
var phpquery = $.ajax({url:"verify.php",
type: "POST",
async: false,
data:{recaptcha_challenge_field:Recaptcha.get_challenge(),recaptcha_response_field:Recaptcha.get_response()},
success:function(resp) {
if (resp == 'false') {
console.dir(resp);
return false;
} else {
console.dir(resp);
return true;
}
}
});
},"");
$('#regForm').validate({
rules:{
recaptcha_response_field:{required:true,checkCaptcha:true}
},
messages:{
recaptcha_response_field:{checkCaptcha:"Your Captcha response was incorrect. Please try again."}
}
});
});
发生的情况是,当我输入正确的 reCaptcha 响应并单击响应文本字段中的提交或选项卡时,它最初会true
在控制台中显示,然后立即抛出false
并阻止我提交表单。
还会发生的情况是,当输入了不正确的 reCaptcha 响应时,它会false
像预期的那样抛出,但是对于我输入的每个字母,它都会将其提交到verify.php
并返回false
。当我最终完成输入正确的 reCaptcha 时,它无法识别它并且仍然返回false
。
false
即使输入了正确的响应,重新加载 reCaptcha 也会引发。
我知道verify.php
工作正常,因为什么时候一切<form>
都会action="verify.php,"
完美运行(即,告诉您是否输入了正确的 reCaptcha,无论您尝试了多少次)。
我错过了什么吗?有没有更简单、更可靠的方法来做到这一点?