Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ajax(jquery验证插件)提交表单需要按两次提交_Jquery_Ajax_Validation_Callback_Form Submit - Fatal编程技术网

使用ajax(jquery验证插件)提交表单需要按两次提交

使用ajax(jquery验证插件)提交表单需要按两次提交,jquery,ajax,validation,callback,form-submit,Jquery,Ajax,Validation,Callback,Form Submit,表单在使用插件提交之前经过验证。并按代码所示提交: jQuery.validator.setDefaults({ submitHandler: function(){ jQuery("form").submit(function(e) { e.preventDefault(); jQuery.post(base_url + "blog/ajax_comment", { author: jQuery("#author").val(), e

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

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
属性,则只需使用,如下所示:

jQuery.validator.setDefaults({
  submitHandler: function(form){ 
    jQuery.post(base_url + "blog/ajax_comment", jQuery(form).serialize(), function (data) {
      //do stuff here
    });
  }
});

当前代码的情况是,在
submit
处理程序中,它将附加一个新的
submit
处理程序供下次使用,而不是实际运行代码。相反,只需在
submitHandler
回调中直接运行代码