jQuery - 为什么ajaxForm会绕过验证程序?

时间:2010-08-08 18:08:27

标签: jquery-plugins jquery jquery-validate

我有以下代码段:

$(document).ready(function () {
      // bind 'regFormBody' and provide a simple callback function
      $('#regFormBody').ajaxForm(function() { 
          alert("Thank you for your comment!"); 
      }); 

      // validate the #regFormBody form when it is submitted
      $("#regFormBody").validate({
        submitHandler: function(form) { 
          alert('form is submitted');
        },        
        rules: {
          ...
        },
        messages: {
          ...
        }
      });
}      

问题是我添加

之后
    // bind 'regFormBody' and provide a simple callback function
    $('#regFormBody').ajaxForm(function() { 
        alert("Thank you for your comment!"); 
    }); 

表单验证根本不起作用。即使没有输入任何形式的信息,我也总是看到消息提醒('表单已提交')。

你能告诉我如何解决这个问题吗?

谢谢

1 个答案:

答案 0 :(得分:3)

您可以展开options object for .ajaxForm(),如下所示:

$('#regFormBody').ajaxForm({
  beforeSubmit: function() {
    return $('#regFormBody').valid();
  },
  success: function() { 
    alert('Thanks for your comment!'); 
  } 
});

这会在提交之前启动验证,如果不是.valid(),它会停止提交,就像您想要的那样。