2011-01-12 3 views
0

페이지에 많은 AJAX 양식이 있으며 버튼을 클릭하면 모두 제출해야합니다. 정규 양식 ** forms.each (function (index, form) {$ (form) .submit();}는 나를 위해 작동하지 않습니다. 이렇게하면 마지막 양식 만 최종적으로 제출 될 것이므로 따라서 제출해야합니다. $ .ajax (...).하지만 양식이 유효 할 경우에만 제출을 허용하고 싶습니다.ClientValidation이 실패 했는데도 XmlHttpRequest가 전송되는 이유는 무엇입니까?

"submitForms"에서 "submitTest"기능을 클릭하십시오 .jQuery 문서에서 "submitHandler"가 호출됩니다. if submit 형태는 유효합니다. 그래서 , 검증 작업 및 "submitHandler" "submitHandler"가 호출되지 않습니다 불구하고 XMLHttpRequest의은, 어쨌든 전송, 형태가 무효 인 경우 호출됩니다.하지만되지 않습니다.

어디에 내 실수? 아니면입니다 거기에 다른 방법? 고마워요

<% using (Ajax.BeginForm("FormPost", "Customer", null, new AjaxOptions() { HttpMethod = "POST" }, new { @class = "form-container" })) 
     { %> 

      <%: Html.TextAreaFor(m => m.Name, new { width = 440, height = 100 })%> 
      <input type="button" value="submitForms" /> 
    <% }%> 


<script type="text/javascript"> 
function submitTest(){ 
var forms = $(".form-container"); 

forms.each(function (index, form) { 
    $(form).validate({ 
     submitHandler: function (form) { 
       $.ajax(
       { 
        .... 
       }); 
     } 
    }); 
}); 

forms.each(function (index, form) { 
    $(form).submit(); 
}); 
} 
</script> 

답변

0

수정 됨이는 온 클릭하고 onsubmit 핸들러를 설정으로는 Ajax.BeginForm로 인해 가장 가능성이

. 유효성 검사 제출 핸들러 전에 먼저 트리거를 시작합니다.

UPDATE 당신이 jQuery.ajax를 통해 양식을 제출 계획 모듈에서 아약스 양식을 계속 사용하려는 경우 다음을 수행 할 수 있습니다.

$(function() { 
    $('.form-container').removeAttr('onsubmit').removeAttr('onclick'); 
}); 

이 Ajax.BeginForm가 form 태그에두고 핸들러를 제거합니다. 이 스크립트를 다른 모듈에 포함시키지 않는 방법이 필요합니다.

+0

하지만 전에 유효성 검사를 시작하므로 $ (form) .submit() $ (form) .validate()가 트리거되어야하며 양식이 유효하면 양식이 제출됩니다. – theateist

+0

@ user573082 당신 말이 맞아요, 업데이트 된 대답 – Vadim

+0

그럼, 어떻게 고칠 수 있어요. ("FormPost", "Customer", null, 새로운 AjaxOptions() {HttpMethod = "POST"}, 새로운 {@class = "form-container"}))) ") 및" 또한 유효성 검사를 사용합니다. 내가 어떻게? – theateist

관련 문제