Google recapcha v3 widget

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Google recapcha v3 widget

Сообщение h_elena »

Добавляю в код формы виджет рекапчи от гугла v3. Форму нужно отправить аяксом. Не могу никак понять как это сделать?

Код: Выделить всё

function recaptchaOnload() {
                "use strict";
                
                $(".g-recaptcha").each(function () {
                    var reCaptcha = $(this);
                    
                    var recaptchaClientId = grecaptcha.render(reCaptcha.attr("id"), {
                        "callback": function (response) {
                            document.getElementById(reCaptcha.closest('form').attr('id')).submit();
                        },
                        "sitekey": '$this->siteKey',
                        "size": "invisible"
                    });
                    
                    reCaptcha.closest('form').on('beforeSubmit',function(){
                        grecaptcha.execute(recaptchaClientId);
                    });
                });
            }
Так как бы все работает, но мне нужен аякс. Для этого пишу код

Код: Выделить всё

$('form').submit(function () {
        console.log('2222222');

        return false;
    });
Но он получается срабатывает раньше reCaptcha.closest('form').on('beforeSubmit',function(){ и я не могу перехватить запрос и блокировать редирект.
Пробовала менять reCaptcha.closest('form').on('beforeSubmit',function(){ на reCaptcha.closest('form').submit(function() { Толку нет.
Функция function recaptchaOnload() идет в виджете и там писать код, нужный только в одном случае для конкретной формы не хотелось бы.
Пыталась реализовать через код

Код: Выделить всё

<script>
    grecaptcha.ready(function() {
    // do request for recaptcha token
    // response is promise with passed token
        grecaptcha.execute('your reCAPTCHA site key here', {action:'validate_captcha'})
                  .then(function(token) {
            // add token value to form
            document.getElementById('g-recaptcha-response').value = token;
        });
    });
</script>
но он у меня выдает ошибки.
Аватара пользователя
andriel
Сообщения: 43
Зарегистрирован: 2017.12.05, 17:32

Re: Google recapcha v3 widget

Сообщение andriel »

Привет! Может я чего-то недопонимаю, но вроде как Рекапча третьей версии вешается на весь сайт, а не на отдельную форму. Она ж должна проверять постоянно поведение клиента
h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Re: Google recapcha v3 widget

Сообщение h_elena »

Я с 3й рекапчей впервые имею дело. Плюс у меня одна форма обычная, а остальные модульные. По найденным примерам пытаюсь работать
https://stackoverflow.com/questions/515 ... r-54118106
Но везде в примерах она одна. А как быть в моей случае?
Ответить