자바스크립트 동적 셀렉트박스 > script

본문 바로가기

script

자바스크립트 동적 셀렉트박스

작성일 07-07-31 18:45

페이지 정보

작성자서방님 조회 328회 댓글 1건

본문

<%'DB 연결%>

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE><%=strTopTitle%></TITLE>
<meta http-equiv=Cache-Control content=No-Cache>
<meta http-equiv=Pragma content=No-Cache>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="HyungE">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<LINK href="<%=strWebURL%>/include/default.css" type=text/css rel=stylesheet>
</Head>
</Body>
<form name ="productinfo">
 <font size = 2 color = "red"><strong>이벤트 선택</strong></font> :
 <select name="cate1" onChange="javascript:selectcate2(this.value)">
   <option value="" selected>이벤트 선택</option>
<%
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 이벤트 카테고리는 그냥 단순하게 쿼리문을 이용해 뿌려줌

 set oRec = Server.CreateObject("ADODB.Recordset")
 strSQL = ""
 strSQL = "select EICode, EIName, case when EISatus = 9 then '진행' when EISatus = 2 then '예정' when EISatus = 0 then '지난' else '기타' + convert(varchar(11), EISatus) end from EventInfos order by EISatus desc, EICode desc"
 oRec.Open strSQL, oCon, 3, 1

  DO While Not oRec.EOF
   leng = Len(oRec(1))
   If Clng(leng) < 9 Then
    title = Mid(oRec(1),1,8)
    Etitle = title
   Else
    title = Mid(oRec(1),1,13)
    Etitle = title & "..."
   End If
   state = "(" & oRec(2) & ")"
   Eventtitle = state & Etitle

   EIcode = oRec(0)
   Response.Write "<option value='"&EIcode&"'>"&Eventtitle&"</option>"
   oRec.MoveNext
  loop
 set oRec = Nothing
%>
 </select><br>

 <font size = 2 color = "red"><strong>이벤트서브 선택</strong></font> :
     <select id="cate_2" name="cate2">
      <option value="" selected>이벤트서브 선택</option>
     </select>
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' 일단 모든 2차 카테고리의 갯수와 정보를 가져옴.

 set oRec = Server.CreateObject("ADODB.Recordset")
 strSQL = ""
 strSQL = "select count(ESCode) from EventSub"
 oRec.Open strSQL, oCon, 3, 1
 cnt = oRec(0)
 set oRec = Nothing

 set oRec = Server.CreateObject("ADODB.Recordset")
 strSQL = ""
 strSQL = "select ESCode, ESName, ESEICode from EventSub order by ESCode desc"
 oRec.Open strSQL, oCon, 3, 1
 folder = oRec.GetRows

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' 위에서 뽑아온 레코드셋을 2차원배열로 바꾼 다음에...   '
    ' 아래의 룹을 이용해 자바스크립트의 2차원 배열선언 형식으로 '
    ' 스트링변수에 집어 넣음.          '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 strfolder = "folder = new Array()" & chr(13) & chr(9)

 for i=0 to cnt - 1
  strfolder = strfolder & "folder["&i&"] = new Array()" & chr(13) & chr(9)
  strfolder = strfolder & "folder["&i&"][0] = '"&folder(0,i)&"';"
  strfolder = strfolder & "folder["&i&"][1] = '"&folder(1,i)&"';"
  strfolder = strfolder & "folder["&i&"][2] = '"&folder(2,i)&"';" & chr(13) & chr(9)
 next
 set oRec = Nothing

%>
<script language=javascript>
 function selectcate2(value)
 {

  // 위에서 저장했던 2차카테고리의 갯수와 배열선언 스트링을 자바스크립트의 함수 안에서 뿌려줍니다.
  var cnt = <%=cnt%>;
  var a = 1;
  <%=strfolder%>

  // 함수가 호출되면 첫번째 for문에서 기존의 2차카테고리 부분의 옵션리스트를 모두 삭제하고
  // 두번째 for문에서 새로 바뀐 1차카테고리의 하위 2차카테고리를 집어 넣게 됩니다.
  len = document.productinfo.cate2.options.length;
  for(i=0; i < len; i++)
  {
   document.productinfo.cate2.options[1] = null;
  }
  for(i=0; i < cnt;i++)
  {

   if (value == folder[i][2])
   {
    document.productinfo.cate2.options[a++] = new Option(folder[i][1], folder[i][0]);
   }
  }

 }
</script>
</body>
</html>

출처 : 태오닷넷

손좀 봤다. 사실 오늘 하루 종일 걸려서 동적 셀렉트 박스란걸 드디어 해결함 ㅠㅠ

괜한 고집이었지. 큭큭

저 셀렉트 박스 2개는 리로드하지않고서

셀렉트 박스 1에 해당되는 카테고리 선택시 그하위값이 셀렉트 박스 2에서 자동으로 변하는 그런것이다.

 

역시 난감한 자바스크립트..

댓글목록

등록된 댓글이 없습니다.

게시물 검색
Copyright © 서방님.kr All rights reserved.
PC 버전으로 보기