У меня есть веб-сайт с несколькими формами с 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 ()
В чем здесь проблема? И как я могу это решить?