2011-07-04 5 views
1

유효성 검사 (서버 및 클라이언트 쪽 모두)를 거치는 몇 개의 텍스트 상자가있는 양식이 있습니다. 폼에는 "다음", "뒤로", "CanceL"과 같은 버튼이 있습니다. 따라서 사용자가 "뒤로"또는 "취소"버튼을 클릭 할 때 유효성 검사를 할 필요가 없습니다. 이것을 어떻게 할 수 있습니까? 미리 감사드립니다.조건부 유효성 검사 사용 안 함


일부 샘플 :

<div class="buttons">  
<input type="submit" name="cancelButton" value="" /> 
<input type="submit" name="backButton" value="" /> 
<input type="submit" name="nextButton" value="" /> 
</div> 

<% using (Html.BeginForm()) { %> 
    <p> 

    <table style="width: 200px">  
    <tr><td align="center" colspan=2><%= Html.ValidationMessageFor(m => m.street) %><%= Html.DropDownListFor(m => m.street, Model.streetsList) %></td></tr> 
    <tr><td colspan=2>&nbsp;</td></tr> 
    <tr><td valign="bottom" align="right" style="width: 75px"><%= Html.LabelFor(m => m.flatNumber) %>:</td><td align=left><%= Html.TextBoxFor(m => m.flatNumber, new { maxlength = 6, style = "width: 48px;" })%> <%= Html.ValidationMessageFor(m => m.flatNumber) %></td></tr> 
    </table> 
    <br /> 

     <input type="submit" class="refusal button red floatL" name="cancelButton" value="" /> 
     <input type="submit" class="back button green floatL" name="backButton" value="" /> 
     <input type="submit" class="continue button green floatR marR" name="nextButton" value="" /> 
    </div> 
    <div class="clear"> 
    </div> 
    <% } %> 

내가 DataAnnotations을 사용하여 서버 측에서 유효성 검사 속성.

+0

유효성 확인은 어떻게 이루어 집니까? js와? 플러그인으로? 코드의 중요한 부분을 보여줄 수 있습니까? – JMax

+0

죄송합니다. 내 질문에 코드 샘플을 추가하기 만하면됩니다. 감사! – kseen

답변

3

Button 클래스에는 CausesValidation 속성이 있습니다. false로 설정하면 다시 게시 할 때 유효성 검사가 트리거되지 않습니다.

예 : 이것은 ASP.NET을 사용하지 것이다

<asp:Button id="btnCancel" CausesValidation="false" onClick="bntCancel_Click" Text="Cancel" runat="server" /> 

주 유효성 검사기 - 당신이 당신의 자신의 확인이있는 경우 당신이 다른 방법을 사용하지 않도록 설정해야합니다.

+0

답변 해 주신 Tim! 문제는 간단합니다.'' – kseen

2

텍스트 상자를 양식으로 둘러싸고 다음 및 뒤로 돌아가서 제출 단추로 취소하십시오. onsubmit 이벤트가 발생하면 폼이 유효하고 서버로 보내기 위해 진행해야하는 경우 true를 반환하고 그렇지 않으면 false를 반환하는 메서드를 할당합니다.

그래서 나는의 라인을 따라 뭔가 기대 :

<form id="navigatorForm"> 
    <!-- Various text forms here --> 

    <input type="submit" value="Back" onsubmit="back()" /> 
    <input type="submit" value="Next" onsubmit="next()" /> 
    <input type="submit" value="Cancel" onsubmit="cancel()" /> 
    <input type="hidden" id="operation" name="operation" value="" /> 
</form> 

<script type="text/javascript"> 
function validate() { 
    // Perform validation here 
    // If okay, return true, else false 
} 

function next() { 
    document.getElementById('operation').value = 'next'; 
    if(!validate()) { 
     alert('Form is not filed correctly. Please pay more attention!'); 
     return false; // Do not send to server! 
    } else { 
     return true; 
    } 
} 

function back() { 
    document.getElementById('operation').value = 'back'; 
    return true; 
} 

function cancel() { 
    document.getElementById('operation').value = 'cancel'; 
    return true; 
} 
</script> 

공지 사항는 달리 무조건 요청이 임의의 서버로 전송되는 것을 의미 true를 반환) ((다시(), 다음) 및 취소 상황. 이 시점에서 서버 측에서는 추가 테스트를 수행해야하는지 여부를 알기 위해 작업이 다음인지 확인하기 만하면됩니다.

+0

감사합니다. Neil! 방금'MicrosoftMVCValidation.js'와'<% Html.EnableClientValidation(); %>'표현식이므로이 코드를 작성하지 않았습니다. – kseen

관련 문제