Валидация и отправка формы с recaptcha
Есть страница с простой формой - имя, телефон и почта. Инпуты валидируются js-плагинами, письмо приходит на почту, но-их приходит два, с разницей в 5-10 сек. В консоль ничего не выводится, будто рекапча не работает. Может, я не правильно объединил скрипт отправки со скриптом валидации? (токены скрыты)
document.querySelector("form").addEventListener("submit", (e) => {
e.preventDefault();
let tk = "";
grecaptcha.ready(function () {
grecaptcha
.execute("token", {
action: "homepage",
})
.then(function (token) {
tk = token;
document.getElementById("token").value = token;
const data = new URLSearchParams();
for (const pair of new FormData(document.querySelector("form"))) {
data.append(pair[0], pair[1]);
}
fetch("send.php", {
method: "post",
body: data,
})
.then((response) => response.json())
.then((result) => {
if (result["om_score"] >= 0.5) {
console.log("Человек");
// отправка данных на почту
let selector = document.querySelector('input[type="tel"]');
let im = new Inputmask('+7 (999) 999-99-99');
im.mask(selector);
let validateForms = function(selector, rules, successModal, yaGoal) {
new window.JustValidate(selector, {
rules: rules,
submitHandler: function(form) {
let formData = new FormData(form);
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log('Отправлено');
}
}
}
xhr.open('POST', 'mail.php', true);
xhr.send(formData);
form.reset();
}
});
}
validateForms('.form__callback', { email: {required: true, email: true}, tel: {required: true} }, '.popup-done', 'send goal');
} else {
console.log("Бот");
}
});
});
});
});
<form
action="mail.php"
enctype="multipart/form-data"
class="form__callback"
method="POST"
>
<input type="hidden" id="token" name="token" />
<input type="hidden" name="project_name" value="project" />
<input type="hidden" name="admin_email[]" />
<input type="hidden" name="form_subject" value="Тема письма" />
<h2 class="form__heading">Заказать обратный звонок</h2>
<label class="form__input">
<span>Ваше имя</span>
<input type="text" name="Имя" />
</label>
<label class="form__input">
<span>Номер телефона</span>
<input
type="tel"
data-validate-field="tel"
name="Телефон"
placeholder="+7 (___) ___-__-__"
/>
</label>
<label class="form__input">
<span>Адрес электронной почты</span>
<input
type="email"
data-validate-field="email"
name="Почта" />
</label>
<input
value="Отправить"
class="form__button"
type="submit"
disabled="disabled"
id="submit"
/>
<label class="form__check">
<input
type="checkbox"
onchange="document.getElementById('submit').disabled = !this.checked;"
/>
<span
>Нажатием на кнопку я даю свое согласие на обработку
персональных данных в соответствии с указанными здесь
условиями.</span
>
</label>
</form>