2015-07-27 1 views
0

У меня есть форма, которая проверяется с помощью jQuery, проверяется и отправляется с использованием jQuery.form, и я хочу добавить капчу Google v2, я следовал этому примеру here, но это не подтверждается. Я заполняю captcha, но все равно получаю сообщение «это поле обязательно» при отправке.с использованием jquery validate и Google v2 captcha

Вот код проверки:

<script type="text/javascript"> 

jQuery(document).ready(function() { 

    $j('.service-request-form').each(function() { 
     $j(this).validate({ 
      errorPlacement: function(error, element) { 
       $j(element).before(error); 
      }, 
      errorElement: "span", 
      ignore: [], 
      rules: { 
       name: "required", 
       email: { 
        required: true, 
        email: true 
       } 
      }, 
      "hiddenRecaptcha": { 
       required: function() { 
        if(grecaptcha.getResponse() == '') { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      }, 
      messages: { 
       name: "Please enter your name", 
       email: "Please enter a valid email" 
      }, 
      submitHandler: function(form) { 
       $j(form).ajaxSubmit({ 
        success: function(responseText, statusText, xhr, $form) { 
         $j('#service-request').dialog('close'); 
         $j('#thank-you').dialog('open'); 
        } 
       }); 
       return false; 
      } 
     }); 
    }); 
}); 

и вот HTML часть, которая добавляет капчу в форме:

<input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha"> 
<div class="g-recaptcha" data-sitekey="site-key"></div> 
+0

Попробуйте этот ответ для подтверждения вашего ReCaptcha. Это vanillaJS, поэтому вам придется интегрироваться в свой плагин. http://stackoverflow.com/questions/29612879/google-recaptcha-how-to-make-required/29613089#29613089 – colecmc

ответ

1

я вычислял, что проблема: я помещал hiddenRecaptcha за пределами rules. Просто поместить его внутри это сделал трюк:

<script type="text/javascript"> 

jQuery(document).ready(function() { 

    $j('.service-request-form').each(function() { 
     $j(this).validate({ 
      errorPlacement: function(error, element) { 
       $j(element).before(error); 
      }, 
      errorElement: "span", 
      ignore: [], 
      rules: { 
       name: "required", 
       email: { 
        required: true, 
        email: true 
       }, 
       "hiddenRecaptcha": { 
        required: function() { 
         if(grecaptcha.getResponse() == '') { 
          return true; 
         } else { 
          return false; 
         } 
        } 
       } 
      }, 
      messages: { 
       name: "Please enter your name", 
       email: "Please enter a valid email" 
      }, 
      submitHandler: function(form) { 
       $j(form).ajaxSubmit({ 
        success: function(responseText, statusText, xhr, $form) { 
         $j('#service-request').dialog('close'); 
         $j('#thank-you').dialog('open'); 
        } 
       }); 
       return false; 
      } 

     }); 
    }); 
}); 

Смежные вопросы