javascript - 当单个页面上存在 2 个表单时,如何使用 jQuery 表单验证插件验证 reCaptcha?
问题描述
所以我有一个页面,其中有两种语言翻译,一种是罗马尼亚语,另一种是英语。使用 jQuery 按钮在页面中激活/提供 2 个翻译,该按钮将“活动”类添加到翻译的相应 div(不刷新页面)。
我正在使用 jQuery 表单验证插件来验证表单。表单验证在罗马尼亚语翻译上工作得非常好(用户登陆页面时的默认视图)。主要问题是当用户点击翻译按钮激活英文版本,然后提供表单时,grecaptcha.getResponse()返回空,导致我的英文表单验证不提交。
以下是我的代码:
罗马尼亚语形式:
<form action="forms/contact-form-handler.php" method="POST" UTF-8 id="ro-form">
<div class="columns is-variable is-2 is-multiline">
<div class="column is-half">
<input class="input" type="text" name="name" placeholder="Nume si prenume" id="ro-name">
</div>
<div class="column is-half">
<input class="input" type="email" name="email" placeholder="Email" id="ro-email">
</div>
<div class="column is-half">
<input class="input" type="text" name="phone" placeholder="Telefon" id="ro-phone">
</div>
<div class="column is-half">
<input class="input" type="text" name="budget" placeholder="Buget">
</div>
<div class="column is-full">
<textarea class="textarea" name="message" placeholder="Message" id="ro-message"></textarea>
</div>
<div class="column is-half">
<div class="g-recaptcha" data-sitekey="my_key_here"></div>
<input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">
<button type="submit" class="button is-warning"><span class="send-btn">Send message</span></button>
</div>
</div>
</form>
英文表格:
<form action="forms/contact-form-handler.php" method="POST" UTF-8 id="en-form">
<div class="columns is-variable is-2 is-multiline">
<div class="column is-half">
<input class="input" type="text" name="name" placeholder="Name">
</div>
<div class="column is-half">
<input class="input" type="email" name="email" placeholder="Email" id="en-email">
</div>
<div class="column is-half">
<input class="input" type="text" name="phone" placeholder="Phone">
</div>
<div class="column is-half">
<input class="input" type="text" name="budget" placeholder="Budget">
</div>
<div class="column is-full">
<textarea class="textarea" name="message" placeholder="Message"></textarea>
</div>
<div class="column is-half">
<div class="g-recaptcha" data-sitekey="my_key_here"></div>
<input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">
<button type="submit" class="button is-warning"><span class="send-btn">Send message</span></button>
</div>
</div>
</form>
jQuery 验证实例:
$(function() {
// Validate Romanian Form
$("#ro-form").validate({
ignore: ".ignore",
rules: {
name: "required",
phone: "required",
email: {
required: true,
email: true
},hiddenRecaptcha: {
required: function () {
if (grecaptcha.getResponse() == '') {
return true;
} else {
return false;
}
}
}
},
messages: {
name: "Please enter your name",
phone: "Please enter your phone number",
email: "Please enter a valid email address"
},
submitHandler: function(form) {
form.submit();
}
});
// Validate Romanian Form
$("#en-form").validate({
ignore: ".ignore",
rules: {
name: "required",
phone: "required",
email: {
required: true,
email: true
},hiddenRecaptcha: {
required: function () {
if (grecaptcha.getResponse() == '') {
return true;
} else {
return false;
}
}
}
},
messages: {
name: "Please enter your name",
phone: "Please enter your phone number",
email: "Please enter a valid email address"
},
submitHandler: function(form) {
form.submit();
}
});
});
感谢您的帮助。
解决方案
<form action="forms/contact-form-handler.php" method="POST" UTF-8 id="form">
<input type="text" class="hidden" id="language" value="1" />
<div class="columns is-variable is-2 is-multiline">
<div class="column is-half">
<input class="input" type="text" name="name" placeholder="Name">
</div>
<div class="column is-half">
<input class="input" type="email" name="email" placeholder="Email" >
</div>
<div class="column is-half">
<input class="input" type="text" name="phone" placeholder="Phone">
</div>
<div class="column is-half">
<input class="input" type="text" name="budget" placeholder="Budget">
</div>
<div class="column is-full">
<textarea class="textarea" name="message" placeholder="Message"></textarea>
</div>
<div class="column is-half">
<div class="g-recaptcha" data-sitekey="my_key_here"></div>
<input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">
<button type="submit" class="button is-warning"><span class="send-btn">Send message</span></button>
</div>
</div>
</form>
然后您可以检查具有 id='language' 如果 value=1 将占位符更改为英语的输入,否则如果 value =0 将占位符更改为罗马尼亚语。
$(function() {
$("your change button").onClick(()=>{
$("#language").val('0') // or 1
//write function to change all input to Romanian or English language
//sample : $('#en-email').attr("placeholder", "Email");
})
});
推荐阅读
- android - Firebase 功能:创建和保存从 Android 上传的视频的缩略图
- heroku - 在 Heroku 上安装最新 Pandoc 和 LaTeX 的最简单方法
- android-espresso - 如何用 Espresso 测试一部电话是通话,另一部是接听?
- reactjs - 在 react-select 的 onMenuClose 或 onBlur 事件中识别事件是由选项选择还是模糊触发
- c++ - typedef 名称与可变参数模板参数名称一致时的 GCC 错误
- python - Pyinstaller 转换的 exe 文件不在 Windows 7 上运行
- delphi - 如何使用 ZXing 找出 qrcode 方向?
- python - Numpy:加载 csv 文件并使用 genfromtxt 读取字符串值给出警告
- python - 我得到 django.db.utils.IntegrityError: UNIQUE constraint failed: auth_user.username 无明显原因
- django - Django 自定义用户函数