Javascript 提交失败时,同一页面上的多个Recaptcha是否消失?
我在一个页面上有两个ajax表单,它们都是部分视图。两者都有recaptcha,我似乎找不到在表单提交且验证失败后重新加载recaptcha的方法 Recaptcha是显式加载的,我有两个问题,首先,如果我使用:Javascript 提交失败时,同一页面上的多个Recaptcha是否消失?,javascript,jquery,ajax,asp.net-mvc,forms,Javascript,Jquery,Ajax,Asp.net Mvc,Forms,我在一个页面上有两个ajax表单,它们都是部分视图。两者都有recaptcha,我似乎找不到在表单提交且验证失败后重新加载recaptcha的方法 Recaptcha是显式加载的,我有两个问题,首先,如果我使用: <script src="https://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script> 表单中的recaptcha如下所
<script src="https://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>
表单中的recaptcha如下所示:
<div id="recaptcha1"></div>
我使用的是MVC 5,表单提交的Controller操作如下:
public async System.Threading.Tasks.Task<ActionResult> FormSubmit(contactform model, string whichpage)
{if (ModelState.IsValid && status)
{*Updates database/sends email here*
else
{
return PartialView("_contactform", model);
}
public async System.Threading.Tasks.Task FormSubmit(contactform模型,字符串whichpage)
{if(ModelState.IsValid&&status)
{*更新数据库/在此处发送电子邮件*
其他的
{
返回PartialView(“\u contactform”,model);
}
我尝试过多种组合,在不同的位置加载不同的内容,但我找不到一种可以无误运行的组合。当任何一个表单都已提交且验证失败时,我能在各自的表单上同时使用recaptcha的最佳方式是什么?我在通过ajax提交表单时遇到了类似的问题问题是,当表单返回并调用回调函数时,它希望以两种形式呈现两个ReCaptcha。由于一个ReCaptcha已呈现,另一个ReCaptcha将中断。若要仅以正确的形式呈现ReCaptcha,请添加以下
if
语句,以检查ReCaptcha是否已在受尊重的c中呈现该示例使用jQuery
var myCallBack = function () {
if($('#recaptcha1').is(':empty')) {
grecaptcha.render('recaptcha1', {
'sitekey': 'sitekeyhere',
'theme': 'light'
});
}
if($('#recaptcha2').is(':empty')) {
grecaptcha.render('recaptcha2', {
'sitekey': 'sitekeyhere',
'theme': 'light'
});
}
}
您还需要确保两个ReCaptcha占位符元素的格式都符合要求
<form name="form1">
[...]
<div id="recaptcha1"></div>
</form>
<form name="form2">
[...]
<div id="recaptcha2"></div>
</form>
[...]
[...]
<form name="form1">
[...]
<div id="recaptcha1"></div>
</form>
<form name="form2">
[...]
<div id="recaptcha2"></div>
</form>