1

キャプチャ付きのカスタムフォームを使用しています。Captchaはモジュール/プラグインではなく、私がカスタム作成したものです。magentoのデフォルトのバリデーターであるvalidate.js/varien form.jsでajax(ページの更新なし)を使用してキャプチャを検証したいと思います。私は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;
  }

}

前もって感謝します

4

2 に答える 2

1

基本的に、あなたの問題は、私が理解していることから、Validate関数がを待たないことisValidCaptcha()です。

2つの関数を作成firstFunctionsecondFunctionて相互に待機するには、次の方法でそれらを呼び出す必要があります。

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

さらに、最初の関数のコールバックを定義する必要があります。

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

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

YourfirstFunctionはValidateのものであり、yoursecondFunctionisValidCaptcha()AJAX呼び出しを行うものです。

于 2012-09-24T13:41:51.220 に答える
0

AJAX 応答が戻ってきたときに送信をトリガーし、プロトタイプ バリデーターが実行されます。

于 2012-11-21T05:28:43.727 に答える