尽管submitHandler有效,但它不会被触发

我AJAXified评论系统,所以当点击Post Comment按钮时,ajax调用而不是原始表单提交。 感谢我的另一个问题。 如果绑定对象被ajax刷新,则提交不起作用,即使提交按钮被刷新,这也可以正常工作。

现在我想在提交之前validation表单,但我无法使其工作。 即使表单有效,也不会调用submitHandler选项。 alert( "Valid: " + commentform.valid() ); 触发并且在执行原始提交之后不是ajax。

提交表单的javascript看起来像

 jQuery(document).ready(function($){ $('#content_container').on("submit","#commentform",function(){ var commentform=$('#commentform'); // find the comment form console.log('Post Comment button was clicked'); var validator = $("#commentform").validate({ onsubmit: false, rules: { author: "required", email: { required: true, email: true }, url: { url: true }, comment: "required" }, messages: { author: "Please enter your name", email: { required: "Please enter an email address", email: "Please enter a valid email address" }, url: "Please enter a valid URL eg http://www.mysite.com", comment: "Please include your comment" } , submitHandler: function(form) { // The jQuery.validate plugin will invoke the submit handler if the validation has passed. alert( "Valid (submitHandler): " + form.valid() ); console.log("before exit"); return; console.log("after exit"); }, invalidHandler: function(event, validator) { alert( "Valid (invalidHandler): " + form.valid() ); console.log("before exit"); return; console.log("after exit"); } }); alert( "Valid: " + commentform.valid() ); return; $.ajax({ type: 'post', url: formurl, data: formdata, 

有人建议如何在validation后进行ajax调用以提交表单吗?

在这种情况下,您可以尝试这样做:

  jQuery(document).ready(function($){ $('#content_container').on("submit","#commentform",function(){ var commentform=$('#commentform'); // find the comment form console.log('Post Comment button was clicked'); var validator = $("#commentform").validate({ onsubmit: false, rules: { author: "required", email: { required: true, email: true }, url: { url: true }, comment: "required" }, messages: { author: "Please enter your name", email: { required: "Please enter an email address", email: "Please enter a valid email address" }, url: "Please enter a valid URL eg http://www.mysite.com", comment: "Please include your comment" } }); if (commentform.valid()){ //Your ajax to post the form $.ajax({ type: 'post', url: formurl, data: formdata, } else{ //form is not valid. } return false;// stop the form submission and refresh the page. }); }); 

如果手动validation表单以发送ajax请求,则不需要submitHandlerinvalidHandler

这有效,但我建议您考虑一下当前的设计,看看是否可以避免使用新表单删除旧表单,并且每次都必须重新绑定.validate()