根据需要设置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表单标记。
最后只需要使用