需要按两次提交提交带有ajax的表单(jqueryvalidation插件)
在使用此插件提交之前,表单已经过validation。 并按代码中的说明提交:
jQuery.validator.setDefaults({ submitHandler: function(){ jQuery("form").submit(function(e) { e.preventDefault(); jQuery.post(base_url + "blog/ajax_comment", { author: jQuery("#author").val(), email: jQuery("#email").val(), url: jQuery("#url").val(), message: jQuery("#message").val() , post_ID: jQuery("#post_ID").val(), not: jQuery("#not").val() }, function (data) { //do stuff here }); }); } }); jQuery().ready(function() { // validate the comment form when it is submitted jQuery("#commentform").validate(); });
要提交,我需要按两次提交按钮。 我是jQuery的新手,我不知道为什么会这样。 有没有一种简单的方法来解决这个问题?
submitHandler
已经覆盖了默认事件,所以只需将ajax提交的代码放在那里:
jQuery.validator.setDefaults({ submitHandler: function(){ jQuery.post(base_url + "blog/ajax_comment", { author: jQuery("#author").val(), email: jQuery("#email").val(), url: jQuery("#url").val(), message: jQuery("#message").val() , post_ID: jQuery("#post_ID").val(), not: jQuery("#not").val() }, function (data) { //do stuff here }); } });
如果您的元素具有与其ID匹配的name
属性,请使用.serialize()
,如下所示:
jQuery.validator.setDefaults({ submitHandler: function(form){ jQuery.post(base_url + "blog/ajax_comment", jQuery(form).serialize(), function (data) { //do stuff here }); } });
当前代码发生的事情是,在submit
处理程序中,它为下次 附加一个新的 submit
处理程序,而不是实际运行代码。 相反,只需在submitHandler
回调中直接运行代码即可。