エラーが発生したとき(つまり、ユーザー名がすでに使用されているとき)にRecaptchaイメージを更新したいので、AJAXのサインアップフォームを持っています。
JavaScriptを使用してリロードするReCaptchaと互換性のあるコードを探しています。
エラーが発生したとき(つまり、ユーザー名がすでに使用されているとき)にRecaptchaイメージを更新したいので、AJAXのサインアップフォームを持っています。
JavaScriptを使用してリロードするReCaptchaと互換性のあるコードを探しています。
reCaptcha v2の場合は、次を使用します。
grecaptcha.reset();
reCaptcha v1を使用している場合(おそらくそうではありません):
Recaptcha.reload();
これは、にすでにロードされているRecaptchaがある場合に実行されますwindow
。
(以下の@SebiHのコメントに基づいて更新されました。)
バージョン1を使用している場合
Recaptcha.reload();
バージョン2を使用している場合
grecaptcha.reset();
重要: reCAPTCHAAPIのバージョン1.0はサポートされなくなりました。バージョン2.0にアップグレードしてください。
grecaptcha.reset();を使用できます。キャプチャをリセットします。
ソース:https ://developers.google.com/recaptcha/docs/display#js_api
grecaptcha.reset(opt_widget_id)
reCAPTCHAウィジェットをリセットします。オプションのウィジェットIDを渡すことができます。それ以外の場合、関数は最初に作成されたウィジェットをリセットします。(GoogleのWebページから)
または、更新ボタンのクリックをシミュレートすることもできます
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
これを試して
<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>
showRecaptchaを呼び出すと、captchadivに新しいrecaptchaインスタンスが入力されます。
AngularJSユーザーの場合:
$window.grecaptcha.reset();
新しいrecaptcha2.0を使用している場合は、次を使用してください。
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>