提交表单前检查recaptcha2是否填写

Check if recaptcha2 is filled before submitting the form

如何在提交前检查是否填写了新的(ver 2)recaptcha 表格?

问题是这个验证码在 iframe 中,不允许从中读取 ID。

清除问题 - 我不想验证验证码,只是在提交表单之前检查它是否已填写。

编辑
我在 bootstrap 模态中有一个表单,如果我将提交它以检查验证码服务器端,那么我将不得不将用户重定向回他正在使用的页面并再次显示模态并显示错误通知。

在我看来,这将是相当糟糕的用户体验。

好的,我应该可以使用回调来做到这一点:

var captchaFilled = false;
var formValidator =  function(data){

  if(data.length>10){
    captchaFilled = true;
}
}
    $('#form1').on('submit', function(e) {


            if(captchaFilled===false){
              e.preventDefault();  
              alert("verify yourself");
              return false;
            }
            else{
              alert("ok");
                return true;
            }


        });

    grecaptcha.render('captchadiv', {
                'sitekey' : '************',
                'callback' : formValidator
    });

您最好的选择是使用重新验证 API:

中的 getResponse
grecaptcha.getResponse(opt_widget_id)

opt_widget_id 是可选的,是从 render 调用返回的 ID,但如果缺少,它将引用第一个创建的 recaptcha 小部件(如果您只有一个小部件,这就足够了).

Docs are here for reference.