出于安全原因,我尝试在我的联系表单中添加隐形recaptcha .

我在控制台中收到此错误:

Uncaught TypeError:document.getElementById(...) . submit不是函数

我哪里错了?

必要的属性是类名'g-recaptcha',data-sitekey属性中的站点键,以及用于处理data-callback属性中验证码完成的JavaScript回调的名称 .

Google ReCaptcha documentation .

这是详细信息:

HTML

<!DOCTYPE html>
<html>
<head>
    <title></title>
     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <script>
        function onSubmit(data) {
            document.getElementById("contact").submit();
        }
    </script>
</head>
<body>
    <p class="contacts__form-title">Title</p>
    <form action="results.php" class="js-form" id="contact" method="post" name="contact">
        <div class="form-group">
            <input class="form-field js-field-name" placeholder="Your name" required="" type="text"> <span class="form-validation"></span> <span class="form-invalid-icon"><i aria-hidden="true" class="mdi mdi-close"></i></span>
        </div>
        <div class="form-group">
            <input class="form-field js-field-email" placeholder="Your e-mail" required="" type="email"> <span class="form-validation"></span> <span class="form-invalid-icon"><i aria-hidden="true" class="mdi mdi-close"></i></span>
        </div>
        <div class="form-group">
            <textarea class="form-field js-field-message" placeholder="Type the message here" required=""></textarea> <span class="form-validation"></span> <span class="form-invalid-icon"><i aria-hidden="true" class="mdi mdi-close"></i></span>
        </div><button class="site-btn site-btn--form g-recaptcha" data-badge="invisible" data-callback="onSubmit" data-sitekey="6LdZIzkUAAAAAKLqsuoYZIh2cZqy3s0nwhkZpEC9" type="submit" value="Send">Send</button>
    </form>
<script src="assets/js/jquery-2.2.4.min.js"></script>
</body>
</html>

JS

'use strict';


//Validation forms
function validateForm(selector) {
    Array.from(document.querySelectorAll(selector)).forEach(item => {
        item.addEventListener('input', (e) => {
            if(e.target.value === ''){
            item.dataset.touched = false;
            }
        });
        item.addEventListener('invalid', () => {
            item.dataset.touched = true;
        });
        item.addEventListener('blur', () => {
            if (item.value !== '') item.dataset.touched = true;
        });
    });
};

validateForm('.js-form .form-field');

var form = document.querySelector('.js-form');
var formName = '.js-form';

form.addEventListener('submit', function(e){
    submitForm(e, formName);
});

function submitForm(e, formName) {
    e.preventDefault();
    var name = $(formName + ' .js-field-name').val();
    var email = $(formName + ' .js-field-email').val();
    var message = $(formName + ' .js-field-message').val();

    var formData = {
        name: name,
        email: email,
        message: message
    };

    $.ajax({
        type: "POST",
        url: 'mail.php',
        data: formData,
        success: function () {
            console.log('success');
            //...
        },
        error: function () {
            console.log('error');
            //...
        }
    });
}