2010-12-09 7 views
0

ASP에서 사용자 지정 유효성 검사기로 유효성 검사를 시도하는 라디오 단추 그룹이 있습니다. ASP.Net에서 Required Validators를 사용할 수 없기 때문에 Required Validator를 사용할 수 없다는 것을 알고 있습니다. 라디오 버튼 사이에 표시되는 div가 있기 때문에 라디오 버튼 목록을 사용할 수 없습니다.ASP.Net w/jQuery에서 라디오 버튼 유효성 확인

function validateDateStyle(oSrc, args) { 

    $(document).ready(function() { 

     var r1 = $('.reportDates').attr('checked'); 
     var r2 = $('.reportYear').attr('checked'); 

     alert(r1 + " " + r2); 


    }); 

} 

번째로 기능을 트리거시 :

<asp:CustomValidator ID="validateGroup1" runat="server" Display="Dynamic" ErrorMessage="Please select option for step 1" ClientValidationFunction="validateDateStyle" ValidationGroup="validateYTDSearch" /> 

난 데 문제는이 자바 스크립트 함수입니다 : 그들은 사용자 정의 유효성 검사기를

<asp:RadioButton ID="showYear" runat="server" CssClass="reportYear" GroupName="dateSelection"/>Show by calendar year 
//// Div to show if showYear is Clicked 
<asp:RadioButton ID="showDate" runat="server" CssClass="reportDates" GroupName="dateSelection"/>Show by date range 
//// Div to show if showDate is Clicked 

을 클릭 그리고 여기에있다 전자 발리 데이터를 호출하면 창을 팝업합니다.

라디오를 선택한 경우에도 "정의되지 않은 값은 정의되지 않았습니다."

체크 된 값을 제대로 가져 오지 않는 이유는 무엇입니까?

감사

답변

2

당신은 jQuery의 .is() 기능을 사용하고 :checked pseudoselector 사용하여 라디오 버튼의 체크 상태를 확인할 수 있습니다

if($('.reportDates').is(':checked')) { 
    // do stuff 
} 
+0

마지막으로 작동하지만 네,이 솔루션 작동합니다. –

0

이유를 당신이 얻을 "확인 참조 할 때 정의되지 않은 "속성은 라디오 버튼 요소가 선택/선택되지 않은 경우 속성이 존재하지 않기 때문입니다. 선택/선택 해제 할 때마다 브라우저는 해당 속성을 각각 추가/제거합니다.

대부분 유효성을 검사하려는 것은 라디오 버튼이 선택되었다는 것입니다. 일 수 있습니다. 원할 경우 모든 단일 라디오 버튼의 선택 상태를 확인한 다음 나중에 라디오 버튼을 추가하거나 제거하는 경우 두 곳에서 코드를 변경해야합니다.

대신 Krof가 제공 한 솔루션과 비슷한 더 쉬운 솔루션을 사용할 수 있습니다. 예외는 라디오 버튼 그룹을 확인하는 것입니다. 그룹이 실제 html 요소가 아니기 때문에 그룹 이름으로 요소를 선택해야합니다. 페이지가 html 페이지로 렌더링 될 때 그룹 이름은 "name"속성에 의해 선택됩니다.

$('[name$="dateSelection"]') 

은 "$는 ="연산자는 단순히 "로 끝나는"로 번역 ASP.Net 가능성이 콘텐츠 패널 ID 또는 종류의 뭔가 이름을 앞에 수 있기 때문이다. 그것은 약간의 속임수이지만, 당신이 원하는 것을 선택할 수있는 간단한 방법입니다.

"dateSelection"으로 끝나는 값을 갖는 "name"속성을 갖는 radiobuttons의 배열이 반환됩니다. 라디오 버튼은 모든 그룹에서 선택된 경우 지금

는이 작업을 수행 할 것, 결정 :

그룹의 라디오 버튼이 선택 여부와 인 경우 결과 값을 알려줍니다
$('[name$="dateSelection"]').is(':checked'); 

각각의 개별 라디오 버튼 상태를 확인하는 것보다 훨씬 더 우아한 해결책입니다. 말할 것도없고, 나중에 버튼을 추가/제거 할 때 버그가 발생하기 쉽습니다.