2010-11-23 3 views
0

일련의 라디오 버튼과 일부 텍스트 필드가 포함 된 사용자 컨트롤이 있습니다. 특정 라디오 버튼이 선택되어 있으면 두 개의 텍스트 필드의 내용을 확인하려고합니다.CustomValidator Javascript 함수는 라디오 버튼이 선택되지 않았다고 생각합니다.

내 제어 마크 업이 포함되어 있습니다

<asp:TextBox ID="FromDate" runat="server" Columns="8"></asp:TextBox> 
<asp:TextBox ID="ToDate" runat="server" Columns="8"></asp:TextBox> 
<asp:RadioButton runat="Server" ID="RadioBetween" GroupName="Date" CssClass="date_group_options_control_radio"/> 
<asp:CustomValidator ID="DateValidator" runat="server" Display="Dynamic" ClientValidationFunction="ValidateDateFields_Client" OnServerValidate="ValidateDateFields"></asp:CustomValidator> 

<script type="text/javascript"> 
function ValidateDateFields_Client(source, args) 
{ 
    debugger; 
    var bRadioBetweenSelected = false; 

    var oRadio = document.getElementById('<%=RadioBetween.ClientID%>'); 
    if (oRadio != null && (oRadio.checked == true || oRadio["checked"] == true)) 
    { 
     bRadioBetweenSelected = true; 
    } 

    if (bRadioBetweenSelected) 
    { 
     var oFromDate = document.getElementById('<%=FromDate.ClientID%>'); 
     var oToDate = document.getElementById('<%=ToDate.ClientID%>'); 

     if (oFromDate != null && oToDate != null) 
     { 
      var sFromDate = oFromDate.value; 
      var sToDate = oToDate.value; 

      source.innerHTML = ValidateFromToDate(sFromDate, sToDate, args); 
     } 
     else 
     { 
      args.IsValid = true; 
     } 
    } 
    else 
    { 
     args.IsValid = true; 
    } 
} 
</script> 

ValidateFromToDate 그냥 값을 확인하고 그들이 제정신 있는지 확인합니다.

RadioBetween을 확인했는지 여부를 알 수 없기 때문에 결코 확인에 들어 가지 않습니다. 그러나 서버 측 코드는 올바르게 작동합니다 (똑같은 일을합니다).

수동으로 체크 대상을 'true'로 설정하면 예상대로 작동합니다.

여행을 서버에 저장하려면이 클라이언트 측을 어떻게 확인할 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이것은 매우 사소한 코드 여야합니다 :-)

답변

0

내가 한 페이지에 같은 컨트롤의 두 가지 버전을 가지고 있기 때문에이 있음을 밝혀졌습니다. 숨겨진 것 (모달 대화 상자의 깊이 깊음)은 주 대화 상자와 충돌합니다. 클라이언트 유효성 검사 함수는 숨겨진 컨트롤의 컨트롤에서 두 번 호출됩니다.

왜 볼 수 있지만 컨트롤의 두 번째 인스턴스를 주석으로 때 모든 작동합니다.

매일 ASP.NET 나를 혼란

:-) 이유는 여기에 설명되어 있습니다 : User Control with Client + Server Side CustomValidation; Wrong Client side validator is picked

0

RadioButton을 사용하는 이유는 명확하지 않습니다. 일반적으로 GroupName이 동일한 RadioButton이 두 개 이상 있습니다. 아마도 CheckBox 만 있으면 될까요?

+0

예, –

0

FireBug 또는 다른 JavaScript 디버깅 도구를 사용하여 문제를 현지화 할 수 있습니다. 함수에 중단 점을 넣고 각 실행 단계에서 변수에 어떤 값이 삽입되는지 확인합니다.

+0

디버거 그것이라고 생각 상호 배타적 다른 날짜 옵션을 선택할 수있는 3 개 라디오 버튼 모두가 확인되지 않은. 디스플레이는 다르지만 –

관련 문제