Magento:在表格中使用'validate-ajax'?

时间:2012-09-24 12:59:14

标签: jquery validation magento

我正在使用验证码的自定义表单。 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;
  }

}

提前致谢

2 个答案:

答案 0 :(得分:1)

基本上,根据我的理解,您的问题是您的验证功能不会等待isValidCaptcha()

为了使2个函数firstFunctionsecondFunction等待彼此,您必须按以下方式调用它们:

firstFunction(function(){
    secondFunction();
});

此外,你必须为第一个函数定义一个回调:

function firstFunction(callback){
    // do stuff here
    callback();
}

function secondFunction(){
     // do ajax call here
}

您的firstFunction是验证号码,而secondFunction是进行AJAX通话的isValidCaptcha()

答案 1 :(得分:0)

当AJAX响应回来时触发提交&amp;原型验证器将运行。