2010-11-20 2 views
0

"wmi_cell_phone"이라는 TextBox와 RadioButtonList "wmi_send_sms"가 포함 된 양식이 있습니다. 기본적으로 선택한 라디오 값이 "Y"인지 확인하는 유효성 검사기를 만들어야합니다. 이 경우 TextBox 값이 비어 있는지 확인합니다. 비어 있으면 사용자에게 값을 입력해야 함을 알려야합니다.asp.net의 RadioButtonList 및 TextBox 값을 확인하는 CustomValidator에 문제가 발생했습니다.

<asp:TextBox ID="wmi_cell_phone" runat="server" MaxLength="100" Width="200px"></asp:TextBox> 
<asp:RadioButtonList ID="wmi_send_sms" RepeatDirection="Horizontal" runat="server" Width="140px" CssClass="radio"></asp:RadioButtonList> 

및 코드 숨김 (VB) :

<asp:CustomValidator ID="val_wmi_send_sms" runat="server" 
ClientValidationFunction="ValidateSMS" 
Display= "Dynamic" 
ErrorMessage="Please enter a valid phone number."> </asp:CustomValidator> 

<script language="javascript" type="text/javascript">     
function ValidateSMS(Source, args) 
{ 

    var smsRadio = document.getElementsByName('<%= wmi_send_sms.ClientID %>'); 
     var cellphone = document.getElementById('<%= wmi_cell_phone.ClientID %>');  

    for (var x = 0; x < smsRadio.length; x ++) 
    { 
     if (smsRadio[x].checked) 
     { 
      if (smsRadio[x].value == "Y") 
      { 
       if (cellphone.value == "") 
        args.IsValid = false; 
       else 
        args.IsValid = true; 
      } 
     } 
    } 
} 
</script> 

니어가 작동하지 않는 것

wmi_send_sms.Items(0).Value = "Y" 
wmi_send_sms.Items(1).Value = "N" 

내 검사기 여기

내에서 .aspx 코드 .. 어쩌면 내가 잘못된 방식으로 RadioButtonList에 액세스하고 있습니다.

+0

에 액세스하여 유효성을 확인하는 경우

<asp:RadioButton ID="wmi_send_sms_y" runat="server" GroupName="wmi_send_sms" Text="Y" /> <asp:RadioButton ID="wmi_send_sms_n" runat="server" GroupName="wmi_send_sms" Text="N" /> 

은 그럼 당신은 확인할 수 있나요? js 함수를 디버깅 했습니까? 또한 Validator의 마크 업을 게시하십시오. –

+0

내 말은, 그것이하는 일을하고 있지 않다는 것입니다 ...사용자가 "예"값으로 Radio를 선택하고 TextBox를 비워두면 사용자에게 TextBox에 값을 입력해야한다고 알리려고하지만 아무 것도하지 않습니다. – Joe

+0

if js 함수가 호출됩니까? ie를위한 개발자 도구를 사용하십시오 : http://www.microsoft.com/downloads/en/details.aspx?FamilyID=95e06cbe-4940-4218-b75d-b8856fced535 또는 Firefox 용 FireBug : https://addons.mozilla.org/ en-US/firefox/addon/1843/ –

답변

1

Validator가 ClientValidationFunction을 호출하면 먼저 디버그해야합니다. 즉 대한

유효성 검사기는 아무것도 true로 ValidateEmptyText을 설정할 필요가 선택되지 않은 경우에도 작업을해야하는 경우 https://addons.mozilla.org/en-US/firefox/addon/1843/.

  • 제출 단추, 유효성 검사기 컨트롤 및 유효성 검사 컨트롤 모두에서 ValidationGroup 값이 일치합니까?
  • 제출 버튼에 CausesValidation = true가 있습니까?
  • RadioButtonList에 CausesValidation = true가 있습니까?
0

"어쩌면 내가 잘못 방법으로 RadioButtonList에 접근하고있어 .."

네를.

<table id="wmi_send_sms" class="radio" style="width:140px;"> 
    <tr> 
    <td> 
     <input id="wmi_send_sms_0" type="radio" name="wmi_send_sms" value="Y" /> 
     <label for="wmi_send_sms_0">Y</label> 
    </td> 
    <td> 
     <input id="wmi_send_sms_1" type="radio" name="wmi_send_sms" value="N" /> 
     <label for="wmi_send_sms_1">N</label> 
    </td> 
    </tr> 
</table> 

귀하의 <%= wmi_send_sms.ClientID %> 태그는 라디오 버튼리스트를 둘러싸는 테이블의 ID를 받고있다 : 생성 된 마크 업에서

봐, 그것은이 같은 것입니다.

개인적으로 클라이언트 측에서는 RadioButtonList을 피하는 것이 훨씬 쉽습니다. 두 개의 RadioButton 컨트롤을 만들고 GroupName 속성을 사용하여 서로 연결하십시오. 은 "Y"하나 <%= wmi_send_sms_y.ClientID %>`가 work`하지 않는 것 의미

+0

귀하의 의견에 Carson63000에게 감사드립니다, 고맙습니다! 불행히도, 나는 일하는 회사의 고객을 위해 기존 프로젝트를 진행하고 있습니다. 응용 프로그램의 디자인을 변경할 수 없습니다 (RadioButtonList에서 RadioButton으로 변경할 수 없으므로). 기존 코드에 Validator를 추가하면됩니다. (어떻게 알 수 있습니다! – Joe

+0

꽤 좋았습니다. 약간의 손길 만 뻗쳐서 RadioButtonList 내부의 개별 버튼에 대한 클라이언트 ID를 쉽게 얻을 수있는 방법을 찾지 못했습니다. 그러나 <% = wmi_send_sms.ClientID %>를 사용하면 가능한 테이블을 얻을 수 있습니다. 내부 살펴보기 - 궁극적으로 실제 요소를 찾아서 어떤 것이 있는지 확인해야합니다. jQuery를 사용하면 훨씬 쉽게 사용할 수 있습니다. – Carson63000

+0

또는 * 할 수 있습니다. 첫 번째 의 ID가 RadioButtonList의 ClientID가되고 "getOlementsByName ('<% = wmi_send_sms.ClientID %> _ 0')과 같이"_0 "이 있다고 가정합니다. 안전 할 것이거나 절대로 변하지 않을 것입니다. – Carson63000

관련 문제