2017-09-04 82 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) { 
     .... 
相关问题