Google ReCaptcha (jQuery): сработал неправильный обратный вызов - PullRequest
0 голосов
/ 11 января 2019

У меня есть веб-сайт с несколькими формами с Google ReCaptcha на одной странице. Я рендерим капчу в идентификатор виджета, а затем выполняю этот идентификатор виджета. Но когда я отправляю форму, отправляется неправильный идентификатор виджета.

var widgetonSubmit;
var widgetLookingFor;

var onloadCaptcha = function() {
  if (typeof onSubmit !== 'undefined' && $.isFunction(onSubmit)) {
    widgetonSubmit = grecaptcha.render(document.getElementById('recaptcha'), {
      'sitekey': sitekey,
      'callback': onSubmit
    });
  }

  if (typeof SubmitLookingFor !== 'undefined' && $.isFunction(SubmitLookingFor)) {
    widgetLookingFor = grecaptcha.render(document.getElementById('recaptchaSubmitLookingFor'), {
      'sitekey': sitekey,
      'callback': SubmitLookingFor
    });
  }
}

$('#frmLookingFor').submit(function(event) {
  event.preventDefault();
  // do some validation
  grecaptcha.execute(widgetLookingFor);
});

function SubmitLookingFor(response) {
  var frmContactPopup = $('#frmLookingFor');
  $.ajax({
    type: frmContactPopup.attr('method'),
    url: frmContactPopup.attr('action'),
    data: frmContactPopup.serialize(),
    success: function(data) {
      console.log(data);
    }
  });
}

$('#frmSiteContact').submit(function(event) {
  event.preventDefault();

  // do some validation
  grecaptcha.execute(widgetonSubmit);

});

function onSubmit(response) {
  var contactForm = jQuery('#frmSiteContact');
  jQuery.ajax({
    type: contactForm.attr('method'),
    url: contactForm.attr('action'),
    data: contactForm.serialize(),
    success: function(data) {
      console.log(data);
    }
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<script src='https://www.google.com/recaptcha/api.js?onload=onloadCaptcha&render=explicit' async defer></script>

<form id="frmSiteContact">
  <div id='recaptcha' class="g-recaptcha" data-size="invisible"></div>
</form>

<form id="frmLookingFor">
  <div id='recaptchaSubmitLookingFor' class="g-recaptcha" data-size="invisible"></div>
</form>

При отправке формы с идентификатором frmLookingFor выполняется функция onSubmit (), а не SubmitLookingFor ()

В чем здесь проблема? И как я могу это решить?

...