2010-03-08 118 views
3

我想使用jQuery ajaxForm插件中的「beforeSubmit」選項來驗證數據,但即使有無效的表單域,表單將提交。我哪裏錯了?謝謝,jQuery驗證之前ajaxForm

$(document).ready(function() { 
function validator(){ 
     $("#commentForm").validate(); 
} 

    $('#commentForm').ajaxForm({ 
     dataType: 'json', 
     url: "http://highlandfamilyeyecare.com/contactengine.php", 
     beforeSubmit: validator, 
     success:  function(data) { 
      $('ul.form').fadeOut("slow"); 
      $('ul.form').html(data.formula).slideDown('slow');} 
    }); 
}); 

和HTML:

<ul class="form"> 


    <li>  
     <form method="post" action="form.php" id="commentForm"> 

     <label class="white">Your Name</label> 
     <input class="text-input required" type="text" name="name" /></li> 

    <li> 
     <label class="white">Email</label> 
     <input class="text-input required email" type="text" name="email"/></li> 

    <li> 
     <li><input type='submit' value="Submit" /> 
     </form></li> 

</ul> 

回答

6

beforeSubmit()函數沒有返回任何東西。

你會想:

function validator() { 
    return $("#commentForm").validate(); 
} 

假設該$('#commentForm").validate()存在,並且正確地返回真/假。

+0

謝謝,這工作時,我添加了「.form」的功能的結尾。 ********* function validator(){return $(「#commentForm」)。validate()。form; } – superUntitled 2010-03-08 22:21:57

3

documentation,驗票功能必須爲了防止表單提交返回false

+0

+1爲rtfm。仍然需要知道爲什麼驗證沒有返回錯誤消息 – superUntitled 2010-03-08 22:21:03

2

假設validate()方法是驗證插件,這是做這件事的正確方法。如果驗證方法中有任何錯誤,表單將不會被提交。

$('#commentForm').validate({ 
     errorClass: "invalidField", 
     submitHandler: function() { 
      $('#commentForm').ajaxSubmit(ajaxFormOptions); 
     } 
    }); 

其中ajaxFormOptions是您的提交選項。

+0

請記住添加submitHandler:function(form){$(form).ajaxSubmit等。 – benpalmer 2012-09-10 10:16:05