button单击jQuery表单validation

我有一个简单的页面,在窗体外面有一个窗体和一个button。 我试图validationbutton单击窗体上。 我已经添加了document.onready函数的表单validation规则。 但是表单没有得到validation。

HTML: –

<html> <head> <script src="lib/jquery1.5.2.js"></script> <script src="lib/jquery.validate.js"></script> <script src="lib/myjs.js"></script> </head> <body> <form id="form1" name="form1"> Field 1: <input id="field1" type="text" class="required"> </form> <div> <input id="btn" type="button" value="Validate"> </div> </body> </html> 

JS: –

 $(document).ready(function(){ $("#form1").validate({ rules: { field1: "required" }, messages: { field1: "Please specify your name" } }) $('#btn').click(function() { $("#form1").validate(); // This is not working and is not validating the form }); }); 

任何想法有什么不对?

在你的click处理程序中,错误是.validate()方法; 它只初始化插件,它不validationform

为了消除在form submitbutton的需要,使用.valid()来触发validation检查…

 $('#btn').on('click', function() { $("#form1").valid(); }); 

jsFiddle演示

.validate() – 在DOM准备好的时候初始化插件(带有选项)。

.valid() – 检查validation状态(布尔值)或在任何时候触发form上的validationtesting。

否则,如果您在form容器中有一个type="submit"button,则不需要特殊的click处理程序和.valid()方法,因为该插件会自动捕获该方法。

演示无需click处理程序


编辑

你的HTML中也有两个问题

 <input id="field1" type="text" class="required"> 
  • .validate()声明规则时,不需要class="required" 。 这是多余的和多余的。

  • name属性丢失。 规则是通过name.validate()中声明的。 该插件依赖于唯一的name属性来跟踪input。

应该…

 <input name="field1" id="field1" type="text" /> 
 $(document).ready(function() { $("#form1").validate({ rules: { field1: "required" }, messages: { field1: "Please specify your name" } }) }); <form id="form1" name="form1"> Field 1: <input id="field1" type="text" class="required"> <input id="btn" type="submit" value="Validate"> </form> 

你也是使用type =“button”。 而我不知道为什么你应该分开提交button,把它放在窗体中。 这样做更合适。 这应该工作。