私のフォーム(HTML5)内でGoogleの新しいrecaptchaを使用しています: https://www.google.com/recaptcha
フォームを送信する前に、recaptchaをチェックして必要に応じてマークする方法はありますか?サーバー側ではなくクライアント側でこれを検証したいと思います。そうすれば、フォームに戻って、キャプチャに何も入力しないことについてユーザーに警告する必要がなくなります。
ユーザーがrecaptchaに何かを入力したかどうかを確認するために使用できるjavascriptはありますか?
ID g-recaptcha-response
のtextareaフィールドを確認できます。あなたは次のようにすることができます:
$("form").submit(function(event) {
var recaptcha = $("#g-recaptcha-response").val();
if (recaptcha === "") {
event.preventDefault();
alert("Please check the recaptcha");
}
});
これがお役に立てば幸いです。
AnkeshとLammertの両方のソリューションの一部を使用したバニラJavaScript実装:
var form = document.getElementById('ctct-custom-form');
form.addEventListener("submit", function(event){
if (grecaptcha.getResponse() === '') {
event.preventDefault();
alert('Please check the recaptcha');
}
}
, false);
フォーム送信リスナーコードのクレジット: JavaScriptでフォーム送信イベントをリッスンするにはどうすればよいですか?
grecaptcha.getResponse()
-Recaptchaの応答を返します。以下のような状態で確認できます
grecaptcha.getResponse(opt_widget_id) === ""
オプションのウィジェットID。指定されていない場合、デフォルトで作成された最初のウィジェットになります。
Rylanbの答えを改善しようとしました。以下のコードは、g-captchaがアクティブになっていて送信を禁止しているページ内のすべてのフォームを見つけます。注:div.g-recaptcha
はform
の子です
const forms = document.querySelectorAll('div.g-recaptcha');
forms.forEach(form=> {
const formParentElement = form.parentElement;
formParentElement.addEventListener("submit", e => {
if (grecaptcha.getResponse() === '') {
e.preventDefault();
alert('Please check the recaptcha');
}
}, false)
});