如何将表单从 google 验证码 v2 升级到验证码 v3
How to upgrade forms from google captcha v2 to captcha v3
我在一个页面上有两个表单,我目前正在使用 google 验证码 v2,但我想将表单升级到验证码 v3,有没有一种简单的方法可以做到这一点。
我从文档中了解到使用此代码可以,但它只适用于一种形式
它忽略了我第一次点击检查我的表格上的所有必填字段。
<script>
function onClick(e) {
e.preventDefault();
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'}).then(function(token) {
// Add your logic to submit to your backend server here.
});
});
}
</script>
<form role='form' method='POST' id='myForm' enctype='multipart/form-data' class='hiddenContent myForm2'>
<center><div id='myCaptchaDiv1'></div></center>
<div class='form-row'>
<div class='col-12' id='btn-subtmit'>
<button class='btn btn-primary btn-controls'>Submit <i class='fas fa-check'></i></button>
</div>
</div>
</form>
<form role='form' method='POST' id='myForm' enctype='multipart/form-data' class='hiddenContent myForm2'>
<center><div id='myCaptchaDiv2'></div></center>
<div class='form-row'>
<div class='col-12' id='btn-subtmit'>
<button class='btn btn-primary btn-controls'>Submit <i class='fas fa-check'></i></button>
</div>
</div>
</form>
<script type="text/javascript">
var CaptchaCallback = function() {
grecaptcha.render('myCaptchaDiv1', {'sitekey' : 'myoid'});
grecaptcha.render('myCaptchaDiv2', {'sitekey' : 'myoid'});
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit" async defer></script>
您是否为两种形式都添加了事件侦听器?表单必须具有唯一 ID(您将它们都发布为 'myForm'),并确保您像这样注册 onClick
回调:
const form1 = document.getElementById('myForm1');
const form2 = document.getElementById('myForm2');
form1.addEventListener('submit', onClick);
form2.addEventListener('submit', onClick);
任何您可能要执行的表单验证(检查必填字段),您可以在之前 grecaptcha.ready(...)
执行。一个例子:
<script>
function onClick(e) {
e.preventDefault();
// DO FIELD CHECKS. If invalid, then return;
...
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'}).then(function(token) {
// Add your logic to submit to your backend server here.
});
});
}
</script>
我在一个页面上有两个表单,我目前正在使用 google 验证码 v2,但我想将表单升级到验证码 v3,有没有一种简单的方法可以做到这一点。
我从文档中了解到使用此代码可以,但它只适用于一种形式 它忽略了我第一次点击检查我的表格上的所有必填字段。
<script>
function onClick(e) {
e.preventDefault();
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'}).then(function(token) {
// Add your logic to submit to your backend server here.
});
});
}
</script>
<form role='form' method='POST' id='myForm' enctype='multipart/form-data' class='hiddenContent myForm2'>
<center><div id='myCaptchaDiv1'></div></center>
<div class='form-row'>
<div class='col-12' id='btn-subtmit'>
<button class='btn btn-primary btn-controls'>Submit <i class='fas fa-check'></i></button>
</div>
</div>
</form>
<form role='form' method='POST' id='myForm' enctype='multipart/form-data' class='hiddenContent myForm2'>
<center><div id='myCaptchaDiv2'></div></center>
<div class='form-row'>
<div class='col-12' id='btn-subtmit'>
<button class='btn btn-primary btn-controls'>Submit <i class='fas fa-check'></i></button>
</div>
</div>
</form>
<script type="text/javascript">
var CaptchaCallback = function() {
grecaptcha.render('myCaptchaDiv1', {'sitekey' : 'myoid'});
grecaptcha.render('myCaptchaDiv2', {'sitekey' : 'myoid'});
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit" async defer></script>
您是否为两种形式都添加了事件侦听器?表单必须具有唯一 ID(您将它们都发布为 'myForm'),并确保您像这样注册 onClick
回调:
const form1 = document.getElementById('myForm1');
const form2 = document.getElementById('myForm2');
form1.addEventListener('submit', onClick);
form2.addEventListener('submit', onClick);
任何您可能要执行的表单验证(检查必填字段),您可以在之前 grecaptcha.ready(...)
执行。一个例子:
<script>
function onClick(e) {
e.preventDefault();
// DO FIELD CHECKS. If invalid, then return;
...
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_site_key', {action: 'submit'}).then(function(token) {
// Add your logic to submit to your backend server here.
});
});
}
</script>