需要jquery.validate而不提交
我已经阅读了其他几篇关于此的post,但仍然没有去。 试图让它变得简单。 我需要在最终提交之前validation在jQuery手风琴中隐藏/显示的表单部分。 我已经使用jquery.validate.js
很长一段时间了,只要我在submit
validation一切都很好,但是现在当我尝试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." } }); });
问题是你不能在处理程序内初始化validate()
。 您在document.ready
初始化它并使用.valid()
来测试有效性。 在这种情况下,不需要提交按钮来validation表单。
根据这个答案 :
.validate()
初始化form
上的Validation插件。
.valid()
返回true
或false
具体取决于您的表单目前是否有效。
所以在你的.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都可以包含在一组标记中。 所有串在一起的多组标签是不必要和多余的。