如何将参数传递给此Google ReCaptcha函数?

Gin*_*rel 1 javascript jquery 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++;
  });
};
Run Code Online (Sandbox Code Playgroud)

如果我删除参数一切正常,只有参数不能传递给函数的基本部分.

如果我添加参数,函数会立即运行,而无需等待ReCaptcha验证.

我希望能够传递参数,然后在验证ReCaptcha时运行该函数.

这是参数传递给它的函数,如果它有帮助:

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

编辑:当我使用参数时,它不会带来计数,它会带回谷歌的响应......

谢谢

Ror*_*san 5

问题是因为您正在verifyCallback立即调用该函数并将该函数的返回值赋给该callback属性.

要解决此问题,请将函数调用包装在匿名函数中,然后将其作为对函数的引用提供callback.另请注意,您可以使用处理程序中的indexeach()而不是手动维护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++;
  });
};
Run Code Online (Sandbox Code Playgroud)