使用 Recaptcha v3 后提交表单不起作用
Submitting form doesn't work after using Recaptcha v3
我正在尝试在我的表单上使用 Recaptcha v3,但提交表单只有在 Recaptcha 被删除时才有效。
启用 Recaptcha 后,我可以单击提交按钮但没有任何反应。即使我可以在右下角的前端看到 protected by reCAPTCHA 徽标,我什至没有在控制台中收到错误消息。
我正在使用 Laravel 6.
我的表单模板如下所示:
<div class="row mt-150">
<div class="col-12 text-center text-white">
<h1>Contact</h1>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-4 col-sm-12">
<form action="{{route('contact_form')}}" method="POST">
@csrf
<div class="form-group">
<label for="email" class="text-white">Email address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="textarea" class="text-white">Message</label>
<textarea class="form-control" id="textarea" rows="3" name="message" required></textarea>
</div>
<input type="submit"
id="submitButton"
class="g-recaptcha btn btn-primary"
data-sitekey="MY-PUBLIC-KEY"
data-callback='onSubmit'
data-action='submit'
name="submit">
</form>
</div>
</div>
<script src="https://www.google.com/recaptcha/api.js"></script>
还有一个app.js包含验证码回调函数:
function onSubmit(token) {
document.getElementById("submitButton").submit();
}
window.onSubmit = onSubmit;
有人可以提示我在实施 recaptcha 时做错了什么吗?
我试着这样做:
这将不起作用,因为您正试图在按钮上触发 submit()
。给表单一个id,然后在表单
上触发submit()
<form action="{{route('contact_form')}}" method="POST" id="contactForm">
@csrf
<div class="form-group">
<label for="email" class="text-white">Email address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="textarea" class="text-white">Message</label>
<textarea class="form-control" id="textarea" rows="3" name="message" required></textarea>
</div>
<input type="submit"
id="submitButton"
class="g-recaptcha btn btn-primary"
data-sitekey="MY-PUBLIC-KEY"
data-callback='onSubmit'
data-action='submit'
name="submit">
</form>
然后在javascript中获取表单并触发提交
function onSubmit(token) {
document.getElementById("contactForm").submit();
}
window.onSubmit = onSubmit;
我正在尝试在我的表单上使用 Recaptcha v3,但提交表单只有在 Recaptcha 被删除时才有效。 启用 Recaptcha 后,我可以单击提交按钮但没有任何反应。即使我可以在右下角的前端看到 protected by reCAPTCHA 徽标,我什至没有在控制台中收到错误消息。 我正在使用 Laravel 6.
我的表单模板如下所示:
<div class="row mt-150">
<div class="col-12 text-center text-white">
<h1>Contact</h1>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-4 col-sm-12">
<form action="{{route('contact_form')}}" method="POST">
@csrf
<div class="form-group">
<label for="email" class="text-white">Email address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="textarea" class="text-white">Message</label>
<textarea class="form-control" id="textarea" rows="3" name="message" required></textarea>
</div>
<input type="submit"
id="submitButton"
class="g-recaptcha btn btn-primary"
data-sitekey="MY-PUBLIC-KEY"
data-callback='onSubmit'
data-action='submit'
name="submit">
</form>
</div>
</div>
<script src="https://www.google.com/recaptcha/api.js"></script>
还有一个app.js包含验证码回调函数:
function onSubmit(token) {
document.getElementById("submitButton").submit();
}
window.onSubmit = onSubmit;
有人可以提示我在实施 recaptcha 时做错了什么吗? 我试着这样做:
这将不起作用,因为您正试图在按钮上触发 submit()
。给表单一个id,然后在表单
submit()
<form action="{{route('contact_form')}}" method="POST" id="contactForm">
@csrf
<div class="form-group">
<label for="email" class="text-white">Email address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="textarea" class="text-white">Message</label>
<textarea class="form-control" id="textarea" rows="3" name="message" required></textarea>
</div>
<input type="submit"
id="submitButton"
class="g-recaptcha btn btn-primary"
data-sitekey="MY-PUBLIC-KEY"
data-callback='onSubmit'
data-action='submit'
name="submit">
</form>
然后在javascript中获取表单并触发提交
function onSubmit(token) {
document.getElementById("contactForm").submit();
}
window.onSubmit = onSubmit;