【发布时间】:2020-06-13 03:55:36
【问题描述】:
所以我有一个页面,其中有两种语言翻译,一种是罗马尼亚语,另一种是英语。使用 jQuery 按钮将 'active' 类添加到翻译的相应 div(不刷新页面)在页面中激活/提供 2 个翻译。
我正在使用 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();
}
});
});
感谢您的帮助。
【问题讨论】:
-
为什么要使用两种形式??你可以用一个来做到这一点
-
您在两种表单中都使用与“hiddenRecaptcha”相同的 ID 和名称。它应该是独一无二的。
-
@daryoshsetorg 因为翻译,我可以使用 1 个表单来完成此操作,但在翻译页面时需要另一个逻辑。
-
@Devang 嗨,尝试将英文表单上的 id 和 name 更改为唯一,我仍然得到 grecaptcha.getResponse() 的空值。
标签: javascript jquery recaptcha formvalidation-plugin