2008-10-09 3 views
1

탭 컨트롤이있는 페이지가 있으며 각 컨트롤에는 거의 15 개의 컨트롤이 있습니다. 총 10 개의 탭과 150 개의 컨트롤이 페이지에 있습니다 (드롭 다운 목록, 텍스트 상자, 라디오 단추, 목록 상자와 같은 컨트롤).ASP.net 페이지에서 javascript를 사용하여 페이지에서 모든 컨트롤을 얻는 방법

내 요구 사항은 페이지 하단에 버튼이 있습니다 (제출). JavaScript를 사용하여 선택하는 탭에 관계없이 해당 페이지의 150 개 컨트롤 중에서 적어도 3 개의 옵션이 선택되었는지 확인해야합니다.

내 aspx 페이지에서 JavaScript로 수행 할 수있는 가장 간단하고 쉬운 방법을 제안하십시오.

+0

'and' 태그가 제거되었습니다. –

답변

4

페이지에 하나의 양식 만 있다고 가정합니다 (더 많은 양식을 반복하고 내부에 아래의 루프를 중첩하는 경우).

var selectedCount = 0; 
    var element; 

    for (var i = 0; i < document.forms[0].elements.length; i++) 
    { 
    element = document.forms[0].elements[i]; 

    switch (element.type) 
    { 
     case 'text': 
     if (element.value.length > 0) 
     { 
      selectedCount++; 
     } 
     break; 
     case 'select-one': 
     if (element.selectedIndex > 0) 
     { 
      selectedCount++; 
     } 
     break; 
     //etc - add cases for checkbox, radio, etc. 
    } 
    } 
0

프로토 타입 serialize을 기반으로 한 모든 것을 볼 수 있습니다. 모든 양식 컨트롤의 해시를 제공 할 수 있습니다. 원하는대로 헤드 스타트를 제공 할 수 있습니다.

방화범과 같은 것이 당신이 얻은 것을보고 도움이되는지 평가하는 데 도움이됩니다.

0

적어도 세 가지 옵션을 선택해야한다는 것을 확인해야하지만이 세 가지 옵션보다 더 많은 유효성을 검사해야 할 가능성이 있습니까? 컨트롤에 고유 한 ID 또는 클래스 이름이 있습니까? 특정 프레임 워크 (jQuery, Prototype 등)를 사용하고 있습니까?

프로젝트에 대한 자세한 내용을 모른 채

..., 어떤 고체 제안을하기 어렵지만, (프레임 워크없이) 순수 자바 스크립트를 사용하여, 당신은, 말하자면, 내가 말하고 싶지만 고유 클래스 이름을 가지고 있다고 가정
  • DOM을로드 한 후, 당신은 배열로의 유효성을 검사하는 데 필요한 모든 컨트롤을로드가 클릭 될 때마다
  • 캐치 제출 이벤트 리스너를 연결합니다 (자신의 ID 또는 클래스 이름을 통해 그들을 얻을)
  • 제출이 실제로 발생하기 전에 컨트롤 목록을 반복하고 필요에 따라 각 컨트롤의 유효성을 검사하십시오. 유효성 검사가 양호하면 제출의 기본 동작을 계속 수행하십시오. 그렇지 않으면 사용자에게 오류 메시지의 일부 양식을 리턴하십시오.

매우 일반적인 솔루션처럼 들릴 수도 있지만 설정에 대해 더 알지 못해 구체적인 코드를 제공하기가 어렵습니다.

0

jQuery를 페이지에 컨트롤을 얻기 위해 많은 간단 할 것이다 : 당신은 정말이 문제를 해결하기 위해 jquery를 사용하여 조사한다

var inputs = $('input'); 
var selects = $('select'); 

var textBoxes = $("input[type='text']"); 
0

. 그것은 무료이며 모든 멋진 자바 프로그래머 요즘 그것을 사용하고 있습니다!

jquery를 사용하면 문제가 매우 사소 해집니다. 다음 코드 줄은 전체 페이지를 검색하고 선택한 항목의 수를 반환합니다.

var count = $("option:selected").length; 
관련 문제