2017-09-04 78 views
0

我想做一個ajax調用,然後等待來自ajax調用的響應(直到此時停止提交表單),然後發佈基於ajax響應的表單得到。這個問題是基於Make ajax call and then submit form。所以,在下面的腳本後,一切正常,但我失去了客戶端驗證。我可以進行ajax調用並仍然尊重客戶端驗證嗎?如何在進行ajax調用時尊重客戶端驗證

@section scripts { 
    <script> 
     var canSubmit = false; 
     $('form').submit(function (e) { 
      if (!canSubmit) { 
       e.preventDefault(); 
       var data = $('form').serialize(); 
       var url = $(this).data('url'); 
       $.ajax({ 
        url: url, 
        type: 'POST', 
        data: data, 
        success: function (response) { 
         if (response.hasPreviousRequest) { 
          if (confirm("You've already applied for this job. Apply again?")) { 
           canSubmit = true; 
           $('form').submit(); 
          } 
         } 
         else { 
          canSubmit = true; 
          $('form').submit(); 
         } 
        }, 
        error: function() { 
         alert("error"); 
        } 
       }); 
      } 
     }); 
    </script> 
} 

P.S:請注意,一旦我爲刪除Ajax調用客戶端驗證開始工作的罰款。有人可以解釋我的這種行爲嗎?

回答

2

你需要調用表單元素上的.valid()方法(如果沒有,則取消Ajax調用)

$('form').submit(function (e) { 
    if (!$(this).valid()) { 
     return // exit 
    } 
    if (!canSubmit) { 
     ....