我在将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);
}
编辑:当我使用参数时,它不会带来计数,它会带回谷歌的响应......
感谢您
答案 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++;
});
};