@delosait

Почему форма отправляется только со второго раза?

Подскажите, пожалуйста, почему форма отправляется только со второго раза? Использую justvalidate и Google Recaptcha3

var selector = document.querySelectorAll('input[type="tel"]');
var im = new Inputmask('+7 (999) 999-99-99');
im.mask(selector);
var selector2 = document.querySelector('input[type="tel"]');
selector2.addEventListener('input', function () {
    console.log(selector2.value);
    var re = /^\d*(\.\d+)?$/;
    console.log(selector2.value.match(/[0-9]/g).length);
    console.log(selector2.value.replace(/[0-9]/g, "0"));
});



var validateForms = function validateForms(selector, rules, successModal, yaGoal) {
    new window.JustValidate(selector, {
        rules: rules,
        submitHandler: function submitHandler(form) {
            var formData = new FormData(form);
            var xhr = new XMLHttpRequest();

            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4) {
                    if (xhr.status === 200) {
                        console.log('Отправлено');
                        $('.fade').delay(1700).fadeOut(300);
                        $('#success').fadeIn(500).delay(1700).fadeOut(600);

                    }
                }
            };


            //начало капчи

            document.querySelector('.form6').addEventListener('submit', (e) => {
                e.preventDefault();
                let tk = '';
                grecaptcha.ready(function () {
                    grecaptcha.execute('6LeQSlMgAAAAAJO-jCrUq6yclSpXTGlm7ZztGkPC', {
                        action: 'homepage'
                    }).then(function (token) {
                        tk = token;
                        document.getElementById('token').value = token;


                        const data = new URLSearchParams();
                        for (const pair of new FormData(document.querySelector('.form6'))) {
                            data.append(pair[0], pair[1]);
                        }
                        fetch('mail/send.php', {
                                method: 'post',
                                body: data,
                            })
                            .then(response => response.json())
                            .then(result => {
                                if (result['om_score'] >= 0.5) {
                                    console.log('Человек')
                                    //Отправляем форму

                                    xhr.open('POST', 'mail/mail.php', true);
                                    xhr.send(formData);
                                    form.reset();


                                } else {
                                    console.log('Бот')
                                }
                            });
                    });
                });
            });

            //

        }
    });
};

validateForms('.form6', {
    email: {
        required: true,
        email: true
    },
    tel: {
        required: true
    }
});
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
ddv88
@ddv88
Binance Futures
Так у тебя внутри fetch еще и xhr.send.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы