Как передать параметр этой функции Google ReCaptcha?

У меня проблема с получением count параметр для передачи в verifyCallback в следующем фрагменте кода:

var CaptchaCallback = function () {
  console.log('CaptchaCallback run');
  var count = 0;

  $('.g-recaptcha').each(function (index, el) {
    grecaptcha.render(el, { 
      'sitekey': 'xxx', 
      'callback': verifyCallback(count) 
    });
    count++;
  });
};

Если я удаляю параметр, все работает как надо, только параметр не может быть передан для важной части функции.

Если я добавлю параметр, функция будет запущена сразу, не дожидаясь проверки ReCaptcha.

Я хочу иметь возможность передать параметр, а затем запустить функцию при проверке ReCaptcha.

Вот функция, в которую передается параметр, если он помогает:

function verifyCallback(formNumber) {
  //var formNumber = 1;
  console.log('verifyCallback');
  $('#submitBtn_' + formNumber).prop('disabled', false);
  console.log('#submitBtn_' + formNumber);
}

Изменить: Когда я использую параметр, он не приносит счет, он возвращает ответ от Google...

Спасибо

1 ответ

Решение

Проблема в том, что вы звоните verifyCallback немедленно и присвоив возвращаемое значение этой функции callback имущество.

Чтобы исправить это, оберните вызов функции в анонимную функцию, которая затем предоставляется как ссылка на callback, Также обратите внимание, что вы можете использовать index значение из each() обработчик вместо того, чтобы вручную поддерживать count переменная. Использование этого метода также будет означать, что вам не нужно использовать закрытие, чтобы сохранить count значение в рамках текущей итерации. Попробуй это:

var CaptchaCallback = function () {
  console.log('CaptchaCallback run');

  $('.g-recaptcha').each(function (index, el) {
    grecaptcha.render(el, { 
      sitekey: 'xxx', 
      callback: function() {
        verifyCallback(index) 
      });
    });
    count++;
  });
};
Другие вопросы по тегам