如何检查一个表单是否有效使用jQueryvalidation插件程序化

我有一个与几个button的forms,我使用jQueryvalidation插件从http://jquery.bassistance.de/validate/ ,我只是想知道是否有一种方法,我可以检查表单是否被考虑在我的JavaScript代码中的任何地方通过jQueryvalidation插件的有效状态。

使用.valid()

 $("#form_id").valid(); 

检查选定的表单是否有效,或所有选定的元素是否有效。 在使用此方法检查之前,需要在表单上调用validate()。

其中id='form_id'的表单是一个已经调用了.validate()的表单。

2015答案:我们在现代浏览器上开箱即用,只需使用jQuery中的HTML5 CheckValidity API即可 。 我也做了一个jquery-html5-validity模块来做到这一点:

 npm install jquery-html5-validity 

然后:

 var $ = require('jquery') require("jquery-html5-validity")($); 

那么你可以运行:

 $('.some-class').isValid() true 

iContribute:一个正确的答案永远不会太晚。

 var form = $("form#myForm"); if($('form#myForm > :input[required]:visible').val() != ""){ form.submit(); }else{ console.log("Required field missing."); } 

通过这种方式,“必填”字段的基本HTML5validation不会干扰使用表单“名称”值的标准提交。

@mikemaccana答案是有用的。

我也使用https://github.com/ryanseddon/H5F 。 在http://microjs.comfind。; 这是一种polyfill,你可以使用它如下(在例子中使用jQuery):

 if ( $('form')[0].checkValidity() ) { // the form is valid } 

对于一组input,您可以使用基于@ mikemaccana的答案的改进版本

 $.fn.isValid = function(){ var validate = true; this.each(function(){ if(this.checkValidity()==false){ validate = false; } }); }; 

现在你可以使用它来validation表单是否有效:

 if(!$(".form-control").isValid){ return; } 

您可以使用相同的技术来获取所有错误消息:

 $.fn.getVelidationMessage = function(){ var message = ""; var name = ""; this.each(function(){ if(this.checkValidity()==false){ name = ($( "label[for=" + this.id + "] ").html() || this.placeholder || this.name || this.id); message = message + name +":"+ (this.validationMessage || 'Invalid value.')+"\n<br>"; } }) return message; }