我正在使用验证码的自定义表单。 Captcha不是一个模块/插件,它只是由我自己编写的。我想使用带有validate.js / varien form.js的ajax(带有页面刷新)验证验证码,这是magento默认验证器。我用validation.add()编写了jQuery.ajax功能。我的问题是,validator()没有等待ajax respose(true / false),它的状态为'undefined'并显示错误。
我已粘贴下面的代码:
Validation.add('validate-captcha', 'Please enter correct captcha', function (v) {
var cp = isValidCaptcha();
return cp;
});
function isValidCaptcha(){
var captcha_value = jQuery("#security_code").val();
var a = 0;
jQuery.ajax({
type: "POST",
url: "<?php echo $this->getUrl('tqr/index/chkcaptcha'); ?>",
asynchronous:true,
data: { security_code1: captcha_value },
dataType: "html",
success: function(data){
if( data == 1 ){
a = 1;
} else {
a = 2;
}
}
});
if( a == 1 ){
return true;
} else if ( a == 2 ){
return false;
}
}
提前致谢
答案 0 :(得分:1)
基本上,根据我的理解,您的问题是您的验证功能不会等待isValidCaptcha()
。
为了使2个函数firstFunction
和secondFunction
等待彼此,您必须按以下方式调用它们:
firstFunction(function(){
secondFunction();
});
此外,你必须为第一个函数定义一个回调:
function firstFunction(callback){
// do stuff here
callback();
}
function secondFunction(){
// do ajax call here
}
您的firstFunction
是验证号码,而secondFunction
是进行AJAX通话的isValidCaptcha()
。
答案 1 :(得分:0)
当AJAX响应回来时触发提交&amp;原型验证器将运行。