2010-08-08 51 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()它會阻止像你想的發生提交。