我有一个带有AJAX的注册表单,所以当出现错误(例如用户名已被使用)时,我想刷新ReCaptcha图像。
我正在寻找与ReCaptcha兼容的代码,使用JavaScript重新加载它。
我有一个带有AJAX的注册表单,所以当出现错误(例如用户名已被使用)时,我想刷新ReCaptcha图像。
我正在寻找与ReCaptcha兼容的代码,使用JavaScript重新加载它。
对于reCaptcha v2,请使用:
grecaptcha.reset();
如果您正在使用reCaptcha v1(可能不是):
Recaptcha.reload();
如果窗口中已经加载了ReCaptcha,那么这将起作用。grecaptcha.reset();
,它完美地运行。 - yussanif (window.grecaptcha) grecaptcha.reset();
。该代码将重置grecaptcha并确保其已正确加载。 - fred727如果您正在使用版本 1
Recaptcha.reload();
如果您正在使用版本2
grecaptcha.reset();
重要: reCAPTCHA API 1.0 版本已不再受支持,请升级到2.0版本。
您可以使用 grecaptcha.reset();来重置验证码。
来源:https://developers.google.com/recaptcha/docs/display#js_api
grecaptcha.reset(opt_widget_id)
重置reCAPTCHA小部件。可选择传递小部件ID,否则该函数将重置第一个创建的小部件。(来自Google网页)
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
Recaptcha
和grecaptcha
都未定义。这个方法对我有用,稍作修改即可:if( $("#recaptcha_reload").length > 0 ){ ....
- Nate-Bit Int试一下这个
<script type="text/javascript" src="//www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
function showRecaptcha() {
Recaptcha.create("YOURPUBLICKEY", 'captchadiv', {
theme: 'red',
callback: Recaptcha.focus_response_field
});
}
</script>
<div id="captchadiv"></div>
对于AngularJS的用户:
$window.grecaptcha.reset();
ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);
对于简单的 JavaScript
<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>
reset()
方法将默认为第一个,除非指定widgetId。该API没有提供在代码中查找widget Id的简单或可靠的方式。解决方法是显式加载小部件并将widget Id存储在数据属性中。<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaLoaded&render=explicit"></script>
<script>
function recaptchaLoaded() {
document.querySelectorAll('.g-recaptcha').forEach((el, i) => {
var widgetId = grecaptcha.render(el);
el.setAttribute('data-grecaptcha-id', widgetId);
});
}
document.getElementById("mybutton").addEventListener("click", (event) => {
var widgetId = document.getElementById("mycaptcha").getAttribute('data-grecaptcha-id');
grecaptcha.reset(widgetId);
});
</script>