根据需要设置reCaptcha字段

我使用新的reCaptcha和jQuery Validate插件。 validation插件适用于我的表单但不幸的是它不适用于reCaptcha。 我试图让它在下面工作:

HTML:

使用Javascript:

  recaptcha: { required: true } 

但它没有奏效。 有谁知道如何解决这一问题。 我只需要默认的这个字段是必需的错误信息。

你应该为reCaptcha添加隐藏的输入,因为jQuery Validation只能validationinput / textarea / select:

 

然后像这样重写你的JS:

 // By default jQuery Validation ignore hidden inputs, // so we change settings to ignore inputs with class "no-validation". // Cause our hidden input didn't have this class — it would be validated! $('form').validate({ ignore: '.no-validation' }); // Add our validation method for reCaptcha: $.validator.addMethod("recaptcha", function(value, element) { var grecaptcha = window.grecaptcha || null; return !grecaptcha || grecaptcha.getResponse(); }, "Please fill reCAPTCHA"); 

就这样。

所以我设法让它奏效了。 唯一的问题是在用户完成reCaptcha之后,消息此字段是必需的并不会很快消失。 我正在使用blur,keydown和focusout来检测用户输入并删除错误消息。

JS:

 $("#myForm").bind('blur keydown focusout', function(){ var dataArray = $("#myForm").serializeArray(), dataObj = {}; console.dir(dataArray); //require firebug //console.log(dataArray); $(dataArray).each(function(i, field){ dataObj[field.name] = field.value; }); var recaptcha = (dataObj['g-recaptcha-response']); if(recaptcha != "") { $( "#temp" ).remove(); } }); $( ".register" ).click(function() { var dataArray = $("#myForm").serializeArray(), dataObj = {}; console.dir(dataArray); //require firebug //console.log(dataArray); $(dataArray).each(function(i, field){ dataObj[field.name] = field.value; }); var recaptcha = (dataObj['g-recaptcha-response']); $( "#temp" ).remove(); if(recaptcha == "") { $("#recaptcha").append(''); } }); }); 

HTML:

 

你的代码:

 

与…

 recaptcha: { required: true } 

您无法validation

。 期。

jQuery Validate插件只能validation同样位于

容器内的

元素。

唯一的解决方法是将您的值复制到type="hidden" input元素中,然后将validation应用于该元素。

希望您使用HTML5表单标记。

 

最后只需要使用