2014-01-13 69 views
1

我遇到了jQuery驗證插件的問題。 當我定義自定義submitHandler時,它在第一次驗證運行後存儲。 我使用submitHandler通過AJAX請求發送對象,但當事件觸發後更改對象時,它不會在提交處理函數中進行更改。 有沒有什麼辦法可以在每個事件觸發後刷新提交處理程序?如何在jQuery驗證中刷新submitHandler

我的代碼

$('.request-telephone-form-submit').click(function(){ 
    var thisForm = $(this).closest('form'); 

    var postVars = new Object(); 
    postVars.name = $('.request-name').val(); 
    postVars.phone = $('.request-phone').val(); 

    thisForm.closest('form').validate({ 
     rules: 
     { 
      Name: { 
       required: true, 

      }, 
      Telephone: { 
       required: true, 

      } 
     }, 
     submitHandler: function(){ 
      $.ajax({ 
       type: 'POST', 
       url: '...', 
       data : postVars, 
       success : function(response) {      

       } 
      }); 

     } 

    }) 

}); 
+0

你可以讓你的代碼變成一個jsfiddle演示嗎? – Lucky

回答

1

您在這裏有一對夫婦的錯誤。

移動你的$.validate叫出click處理程序,並就去做直接在$(document).ready塊:

$(document).ready(function(){ 
    $('#formID').validate({ 
     //options here 
    }); 
}); 

如果您$('.request-telephone-form-submit')在形式提交按鈕,它會自動驗證當按鈕點擊。如果表單根據您的rules進行驗證,那麼它將調用submitHandler函數。當時你可以收集你的帖子變量,如下所示:

submitHandler: function(form){ 
     var postVars = new Object(); 
     postVars.name = $('.request-name').val(); 
     postVars.phone = $('.request-phone').val();    
     $.ajax({ 
      type: 'POST', 
      url: '...', 
      data : postVars, 
      success : function(response) {      

      } 
     }); 
    } 
0

試圖處理你的表單標籤事件並使用$('form.formClass').on('submit', function(){})是更好的jQuery的方式