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

时间:2017-02-28 09:49:45

标签: 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++;
  });
};

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

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

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

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

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

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

感谢您

1 个答案:

答案 0 :(得分:5)

问题是因为您立即调用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++;
  });
};