需要jquery.validate而不提交

我已经阅读了其他几篇关于此的post,但仍然没有去。 试图让它变得简单。 我需要在最终提交之前validation在jQuery手风琴中隐藏/显示的表单部分。 我已经使用jquery.validate.js很长一段时间了,只要我在submitvalidation一切都很好,但是现在当我尝试validation按钮click它不起作用。

   jQuery().ready(function(){ var demo = $(".demo").accordion({ header: '.header', event: false }); var nextButtons = $([]); $("h3.header", demo).each(function(index) { nextButtons = nextButtons.add($(this) .next() .children(":button") .filter(".next, .previous") .click(function() { demo.accordion("activate", index + ($(this).is(".next") ? 1 : -1)) })); }); });   $(".next").click(function(){ $("#test").validate({ rules: { name: "required", // simple rule, converted to {required:true} email: {// compound rule required: true, email: true }, comment: { required: true } }, message: { comment: "Please enter a comment." } }); });  

Section 1

Section 2

Section 3

问题是你不能处理程序初始化validate() 。 您在document.ready初始化它并使用.valid()来测试有效性。 在这种情况下,不需要提交按钮来validation表单。

根据这个答案 :

.validate()初始化form上的Validation插件。

.valid()返回truefalse具体取决于您的表单目前是否有效。

所以在你的.click()处理程序中,你使用.valid() ,而不是.valid() ,结合if语句来测试表单是否有效……

 $(document).ready(function() { $("#test").validate({ // initialize plugin on the form rules: { ... } ... // etc. }); $(".next").click(function(){ // capture the click if($("#test").valid()){ // test for validity // do stuff if form is valid } else { // do stuff if form is not valid } }); }); 

有关详细信息,请参阅docs.jquery.com/Plugins/Validation/valid 。

通常,在form容器中有一个type="submit"按钮,在这种情况下,不需要捕获任何点击,因为这一切都是自动完成的。 这个答案是针对OP的特定情况而定制的,其中不使用传统的submit按钮。

附注:您的所有JavaScript都可以包含在一组标记中。 所有串在一起的多组标签是不必要和多余的。