【问题标题】:Need to press submit twice for submitting a form with ajax (jquery validation plugin)需要按两次提交才能使用 ajax 提交表单(jquery 验证插件)
【发布时间】:2010-10-02 18:06:09
【问题描述】:

在使用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 有点陌生,我真的不知道为什么会这样。有没有简单的方法来解决这个问题?

【问题讨论】:

    标签: jquery ajax validation callback form-submit


    【解决方案1】:

    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 回调中运行您的代码即可。

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 2012-03-19
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多