Помогите разобраться в функциях JavaScript

У меня есть вот такой блок кода на сайте:

<form class="form" method="POST" action="./php/tgbot.php">
<div>
    <input class="form-control" onkeyup="check();" id="FirstNameInput" placeholder="Иван" name="FirstName"></div>
    <input class="form-control" onkeyup="check();" id="LastNameInput" placeholder="Иванов" name="LastName"></div>
</div>

    <div class="g-recaptcha" data-sitekey="секретныйключ" data-callback="check2"></div>

<div>
    <button type="submit" id="send" class="btn btn-outline-primary border-2 text-nowrap me-2" disabled="disabled" data-bs-toggle="modal" data-bs-target="#">Отправить</button>
</div>
</form>

Есть форма внутри которой блок с полями для введения данных пользователем, блок с капчей и кнопка с отправкой. Как мне сделать, чтобы кнопка разблокировалась при заполнении полей И при решении капчи? Я с JS не училась ещё, нашла код для решений подобных задач, но это две разных функции:

function check() {
    var inp1 = document.getElementById('FirstNameInput'),
        inp2 = document.getElementById('LastNameInput');
    document.getElementById('send').disabled = inp1.value && inp2.value ? false : "disabled";
}

function check2() {
    document.getElementById('send').removeAttribute("disabled");
}
   

Одна функция разблокирует только при заполнении полей, но ей не важно решена капча или нет, а другая разблокирует кнопку если решаешь капчу, но ей не важно на заполнение полей. Как написать одну функцию корректно: чтобы связать две функции в одну? Чтобы она проверяла заполнены ли поля И решена капча всё вместе...


Ответы (1 шт):

Автор решения: SwaD

В целом, для решения вашей задачи, без сильного углубления в детали и не меняя логику, можно создать переменную флаг, которая будет отвечать за решение капчи

let captcha = false;

function check() {
    var inp1 = document.getElementById('FirstNameInput'),
        inp2 = document.getElementById('LastNameInput');
    document.getElementById('send').disabled = inp1.value && inp2.value && captcha ? false : "disabled";
}

function check2() {
    captcha = true;
    check(); // если поля заполнили раньше капчи
}

Добавляем проверку на флаг капчи в первую функцию. Вторая будет просто взводить флаг капчи

→ Ссылка