2013-03-29 34 views
0

我正在使用Jquery驗證插件來驗證表單,一切都很好驗證我的問題是在submitHandler函數,由於某種原因,我不''是不是發送表單到我的郵件,我檢查了PHP,並且完全沒問題。這是一個什麼即時通訊更完整的文件http://jsfiddle.net/KszmV/jquery驗證不發送表格

其他事情,我需要做的,我不知道如何做到這一點,它是如何提交表單,而無需再次加載頁面,並顯示在最後的消息形式的

這是我的腳本

<script type="text/javascript"> 
    $(document).ready(function(){ 

     $("#contactusform1").validate({ 
      rules: { 
       "name": { 
        required: true, 
        minlength: 3 
       }, 
       "phone":{ 
        required:true, 
        digits:true 
       }, 
       "email":{ 
        required: true 
       } 

      }, 
      messages: { 
       "name": { 
        required: "Please enter a name" 
       }, 
       "phone":{ 
        required: "Please provide a contact number" 
       }, 
       "email":{ 
        required: "Enter a valid email" 
       } 
      }, 
      errorPlacement: function(error, element) { 
       error.insertAfter(element); 
      }, 

      submitHandler: function (form) {  

       $.ajax({ 
        type: 'POST', 
        data: $('form').serialize(), 
        url: 'process-contact1.php', 
        success: function() { 

        }       

       }); 

       form.submit(); 
      }   

     }); 

    }); 
</script> 
+0

爲什麼要調用'$ .ajax()'和'form.submit()'? – Barmar

+1

[jQuery表單插件](http://www.malsup.com/jquery/form/#api)有助於在不重新加載頁面的情況下提交表單。 – Barmar

+0

我知道使用form.submit是錯誤的,當你使用$ .ajax(),現在如果我拿出form.submit表單不會清除字段(重置)我該怎麼做?甚至這樣做我已經嘗試過,並且數據也不會發送.... TY提前 – paoloi

回答

1

你有幾個問題

submitHandler: function (form) {  
    $.ajax({ 
     type: 'POST', 
     data: $(form).serialize(), // $(form) is ok here 
     url: 'process-contact1.php', 
     success: function() { 
     }       
    }); 
    form.submit(); //<-- REMOVE this 
    return false; //<-- ADD this 
} 

DEMO:http://jsfiddle.net/Y8cHm/

  • 刪除form.submit()因爲插件已在處理這一點。

  • 由於您在做ajax或者您會得到正常的提交/頁面刷新,因此在submitHandler之內您需要return false

  • Your jsFiddle缺少</form>標記。

  • Your jsFiddle被連接到插件的gitHub page代替the CDN.

  • $(form).serialize()是完全可以接受的,如工作演示如上所示。使用引號,$('form')只是針對頁面上的任何<form>。而$(form)針對的是與已傳入您的.validate()函數相同的表單元素。 在你的演示中,他們都給出了相同的結果,儘管這可能不適用於所有其他情況。

+0

ty如果你希望在成功提交表單後重置表單,你應該在'ajax' success'回調中使用'form.reset()''''(形式).find('');' – paoloi

+0

ty表單正在工作 – paoloi