2010-12-08 4 views
4

드롭 다운 목록의 유효성을 검사하는 데 필요한 필드 유효성 검사기가 있습니다. 이 dropdownlist는 autopostback one이며, 그것은 invalidate 속성이 false로 설정되어 있습니다.autopostback 드롭 다운 목록이 발생할 때 유효성 확인 메시지가 여전히 표시됩니다.

기본 항목을 선택하면 유효성 검사 메시지가 표시되지만 여전히 포스트 백을 수행합니다. 그리고 다시 게시 후에 메시지가 사라집니다.

<asp:RequiredFieldValidator ID="ContactMethodRequired" runat="server" ControlToValidate="ContactPreferences" 
      Display="Dynamic" ErrorMessage="Please choose your contact method" 
      EnableClientScript="true" InitialValue=""></asp:RequiredFieldValidator> 
     <div> 
      <asp:DropDownList ID="ContactPreferences" runat="server" AutoPostBack="true" CausesValidation="false"> 
       <asp:ListItem Text="Select" Value="" Selected="True"></asp:ListItem>       
       <asp:ListItem Text="Email" Value="Email"></asp:ListItem> 
       <asp:ListItem Text="Phone" Value="Phone"></asp:ListItem> 
      </asp:DropDownList> 
     </div> 
+0

모두에게 감사, 나는 끝났다는 순수 자바 스크립트를 통해 검증을한다. – fengd

답변

0
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title>Untitled Page</title> 
<script type="text/javascript" language="javascript" > 
function ValidPage() 
    {        
     if (typeof(Page_ClientValidate) == 'function') 
     { 
      if (typeof (Page_ClientValidate) == 'function') { Page_ClientValidate();  } 
      if (!Page_IsValid) 
      {   

       return false; 
      }     
      return Page_IsValid; 
     } 
     return true; 
    } 

</script> 
</head> 
<body > 
    <form id="form1" runat="server" onsubmit="return ValidPage();" > 

     <div> 
      <asp:DropDownList ID="ContactPreferences" runat="server"  AutoPostBack="true" CausesValidation="false"> 
       <asp:ListItem Text="Select" Value="" Selected="True"></asp:ListItem> 
       <asp:ListItem Text="Email" Value="Email" ></asp:ListItem> 
       <asp:ListItem Text="Phone" Value="Phone"></asp:ListItem> 
      </asp:DropDownList> 


      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ContactPreferences" 
      Display="Dynamic" ErrorMessage="Please choose your contact method" 
      EnableClientScript="true" InitialValue=""></asp:RequiredFieldValidator> 

     </div> 

    </form> 
</body> 
</html> 
+0

답변 해 주셔서 감사합니다. 하지만 내가 알기를 원하는 것은 게시 할 때 DropDownList 및 Validator의 버그입니까? – fengd

+0

이 코드의 결과는 유효성 검증이지만 OP는 드롭 다운리스트의 유효성을 검증하지 않기를 원합니다. – AGuyCalledGerald

0

당신이 HTML 요소, 또는 __doPostBack 메서드 호출의 onchange를 이벤트에 WebForm_DoPostBackWithOptions 메서드 호출을 볼 수 있습니까 : 여기

은 코드의 조각인가? 전자는 Page_ClientValidate()를 호출하여 포스트 백을 수행하기 전에 JS 디버깅 도구를 사용하여 경로를 확인할 수 있습니다. 또한 기본 유효성 검사 그룹부터 다른 트리거가 트리거 될 수 있습니까?

+0

또한이 문제가 있습니다. Firebug를 사용하여 __doPostBack이 수행하는 작업을 확인하려고했으나 해결하지 못했습니다. 다른 제안? –

0

어떻게 든 유효성 검사기는 여기에있는 것을 혼란스럽게합니다. 동작을 방지하기 위해 여러 가지 방법이 있습니다 :

1) 당신은이 서버에서 유효성을 검사 의미 발리에

EnableClientScript="false" 

을 설정할 수 있습니다.

(발리는 다른 클라이언트 유효성 검사기에 의해 "추월"때문에)이이 부작용을 바람직하지 않은 경우, 당신이 할 수있는이

2) 페이지에이 자바 스크립트/JQuery와 기능을 추가

function HideValidator() { 

    var validator = $('#<%= ContactMethodRequired.ClientID %>'); 
    validator.hide(); 
} 

과 DDL에 이벤트 핸들러 :

onchange="HideValidator();"