如何让Google Recaptcha v3在Marketo Form的onValidate()事件中运行?

时间:2019-07-01 21:32:25

标签: javascript recaptcha marketo

Marketo的onValidate()函数不适用于Google Recaptcha v3的grecaptcha.execute()。我已将Submittable设置为false,并且当marketo验证触发时,即使我使用了异步等待,它也不会等待grecaptcha.execute()返回。

<script>
MktoForms2.whenReady(function (mktoForm) {
    mktoForm.submittable(false);    

    mktoForm.onValidate(async function (native) {
        if (!native) return;

        const recaptchaToken = await grecaptcha.execute(userConfig.apiKeys.recaptcha, {
            action: userConfig.actions.formSubmit
        });

        mktoForm.addHiddenFields({ "Recaptcha": recaptchaToken });

        if (recaptchaToken.length) {
            mktoForm.submittable(true);
        } else {
            mktoForm.submittable(false);
        }
    });
})
</script>

onValidate()在返回之前应等待recaptchaToken解析,但是它绕过await,每次都使用marketo的subbmittable作为false

0 个答案:

没有答案