2010-08-08 52 views
1

我有下面的代码片段:jQuery - 为什么ajaxForm绕过验证过程?

$(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!"); 
    }); 

后的形式验证不会在所有的工作。即使没有输入任何形式的信息,我总是会看到提示信息('已提交表单')。

可以告诉我如何解决这个问题吗?

谢谢

+0

如果交换顺序并且'.validate()'先运行,会发生什么? – 2010-08-08 18:17:54

+0

请发布一个实例,供我们测试... – 2010-08-08 18:21:57

回答

3

您可以扩展options object for .ajaxForm(),像这样:

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

这将提交前揭开序幕的验证,如果它不是.valid()它会阻止像你想的发生提交。