需要按两次提交提交带有ajax的表单(jquery验证插件)

时间:2010-10-02 18:06:09

标签: jquery ajax validation callback form-submit

在使用this插件提交之前,表单已经过验证。并按代码所示提交:

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的新手,我不知道为什么会这样。有没有一种简单的方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

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处理程序中,它是附加 new submit next 时间的处理程序,而不是实际运行代码。相反,只需在submitHandler回调中直接运行代码。