다중 셀렉트 게시판에 적용했을 때... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

다중 셀렉트 게시판에 적용했을 때... 정보

다중 셀렉트 게시판에 적용했을 때...

첨부파일

write.skin.php (20.7K) 8회 다운로드 2008-09-08 10:21:06

본문

전에 올렸던 글인데 답변해주는 분이 한분도 없으셔서 ㅠㅠ;

그누보드 게시판 글쓰기에 그림처럼 다중 셀렉트 박스를 적용했습니다.

게시판 글쓰기 할때

첨부파일처럼

1차 항목을 선택하면 그에 따라 2차 항목이 바뀌고

1차,2차 항목 값이 게시판에 저장 되는 셀렉트 필드를 만들고 싶은데

일반 스크립트를 쓰니 연동이 안되네요 ;;


혹시 아시는 분.. 구조요청 합니다 ㅎㅎ;;

구조해주세요!!

아래는 제가 적용한 소스입니다.


<Script Language='javaScript'>
<!--
//==========================================================//
// Element 및 값 정의
//==========================================================//

FirstSelectName = "sel1";// 처음 Select Element의 이름
SecondSelectName = "sel2";// 두번째 Select Element의 이름

FirstSelectText = new Array("디젤식","LPG식","전동식","견인/운반차","스키드로다","어테치");
FirstSelectValue = new Array("a","b","c","d","e","f");

SecondSelectText = new Array();
SecondSelectValue = new Array();

SecondSelectText[0] = new Array("HDF15/18-5","FOLEX 20D/25D/30D/33D","FOLEX 35D/40D/45D","HDF50/70-7","FOLEX 100D/120D/135D/160D");
SecondSelectText[1] = new Array("FOLEX 20L/25L/30L","FOLEX 15L/18L/20LA");
SecondSelectText[2] = new Array("FOLEX 16/18/20B AC","FOLEX 22/25/30/32BAC","FOLEX 35/40/45/50BAC","FOLEX 15/18/20BT AC","HBR14/15/18/20/25-7");
SecondSelectText[3] = new Array("FOLEX 40T/15P");
SecondSelectText[4] = new Array("HSL 550-7","HSL 650-7","HSL 850-7");
SecondSelectText[5] = new Array("-어테치-");
SecondSelectValue[0] = new Array("HDF15/18-5","FOLEX 20D/25D/30D/33D","FOLEX 35D/40D/45D","HDF50/70-7","FOLEX 100D/120D/135D/160D");
SecondSelectValue[1] = new Array("FOLEX 20L/25L/30L","FOLEX 15L/18L/20LA");
SecondSelectValue[2] = new Array("FOLEX 16/18/20B AC","FOLEX 22/25/30/32BAC","FOLEX 35/40/45/50BAC","FOLEX 15/18/20BT AC","HBR14/15/18/20/25-7");
SecondSelectValue[3] = new Array("FOLEX 40T/15P");
SecondSelectValue[4] = new Array("HSL 550-7","HSL 650-7","HSL 850-7");
SecondSelectValue[5] = new Array("-어테치-");
//==========================================================//
//-->
</script>


<Script Language='JavaScript'>
<!--
// 현재의 Element들이 속해있는 form의 위치를 자동으로 찾차주는 함수
thisFormCheckString = "This_is_Dynamic_Select_Form";
document.write("<input type='hidden' name='"+thisFormCheckString+"'>");
function FindThisFormName()
{
    var d = document;
    var n = d.forms.length;
    if(n == 0)return 0;

    for(var i=0;i<n;i++)
    {
        var e = d.forms[i].elements;
        for(var x=0;x<e.length;x++)
        {
            if(e[x].name == thisFormCheckString)
            return i;
        }
    }

    return "_Nothing_";
}

thisFormName = FindThisFormName();// 현재폼
if(thisFormName == "_Nothing_")
{
    var FormIsCreated = "Dynamic_Select_Form";
    thisFormName = FormIsCreated;
    document.write("<form name='"+FormIsCreated+"'>");
}

function CreateSecondSelect()
{
    var f = document.forms[thisFormName];
    var n = f[FirstSelectName].selectedIndex;
    var l = SecondSelectText[n].length;
    f[SecondSelectName].options.length = l;

    for(var i=0;i<l;i++)
    {
        f[SecondSelectName].options[i].text = SecondSelectText[n][i];
        f[SecondSelectName].options[i].value = SecondSelectValue[n][i];
    }
    f[SecondSelectName].selectedIndex=0;
}
//-->
</script>


<Script Language='JavaScript'>
<!--
document.write("<select name='"+FirstSelectName+"' onChange='CreateSecondSelect()'>");
for(var i=0;i < FirstSelectText.length;i++)
document.write("<option value='"+FirstSelectValue[i]+"'>"+FirstSelectText[i]+"</option>");
document.write("</select>");
//-->
</script>


<Script Language='JavaScript'>
<!--
document.write("<select name='"+SecondSelectName+"'>");
document.write("<option value=''></option>");
document.write("</select>");

if(FormIsCreated) document.write("</form>");
CreateSecondSelect();
//-->
</script>


검색해서 찾은 소스로 이렇게 해서 제대로 표시는 되는데 글 작성을 해도 게시판 확인하면 내용이 안올라가네요..
추가해야 할게 어떤 부분인지;;;;

함수정의나 이런부분을 제가 잘 몰라요 ㅠㅠ;;

자세히 답변해주시면 정말 정말 감사하겠습니다.

댓글 전체

먼저 오류가 날텐데, 감지하지 못하셨나요,

사실, 자기가 스스로 짜는 것 보다, 가져다 맟추기가 더 힘듬니다.
왜냐하면, 짝이 안맞으니깐요..

다음에도 힘든 과정이 생길테고. 무척 괴로울때가 있으리라 생각합니다. 불안하면서.
틈틈이 공부를 하시길 바랍니다... <=== 잔소리 좀 했습니다..

아래 소스는, 제가 위에 있는 것 변형시키지 않고, 그 위치에서 고치고, 예제를 만들었습니다.
그대로, 변집기에 옴겨다가.,. 실험을 해보세요, 그럼, 답이 나올겁니다..

  <Script Language='javaScript'>
<!--
//==========================================================//
// Element 및 값 정의
//==========================================================//

FirstSelectName = "sel1";// 처음 Select Element의 이름
SecondSelectName = "sel2";// 두번째 Select Element의 이름

FirstSelectText = new Array("디젤식","LPG식","전동식","견인/운반차","스키드로다","어테치");
FirstSelectValue = new Array("a","b","c","d","e","f");

SecondSelectText = new Array();
SecondSelectValue = new Array();

SecondSelectText[0] = new Array("HDF15/18-5","FOLEX 20D/25D/30D/33D","FOLEX 35D/40D/45D","HDF50/70-7","FOLEX 100D/120D/135D/160D");
SecondSelectText[1] = new Array("FOLEX 20L/25L/30L","FOLEX 15L/18L/20LA");
SecondSelectText[2] = new Array("FOLEX 16/18/20B AC","FOLEX 22/25/30/32BAC","FOLEX 35/40/45/50BAC","FOLEX 15/18/20BT AC","HBR14/15/18/20/25-7");
SecondSelectText[3] = new Array("FOLEX 40T/15P");
SecondSelectText[4] = new Array("HSL 550-7","HSL 650-7","HSL 850-7");
SecondSelectText[5] = new Array("-어테치-");
SecondSelectValue[0] = new Array("HDF15/18-5","FOLEX 20D/25D/30D/33D","FOLEX 35D/40D/45D","HDF50/70-7","FOLEX 100D/120D/135D/160D");
SecondSelectValue[1] = new Array("FOLEX 20L/25L/30L","FOLEX 15L/18L/20LA");
SecondSelectValue[2] = new Array("FOLEX 16/18/20B AC","FOLEX 22/25/30/32BAC","FOLEX 35/40/45/50BAC","FOLEX 15/18/20BT AC","HBR14/15/18/20/25-7");
SecondSelectValue[3] = new Array("FOLEX 40T/15P");
SecondSelectValue[4] = new Array("HSL 550-7","HSL 650-7","HSL 850-7");
SecondSelectValue[5] = new Array("-어테치-");
//==========================================================//
//-->
</script>


<Script Language='JavaScript'>
<!--
// 현재의 Element들이 속해있는 form의 위치를 자동으로 찾차주는 함수
thisFormCheckString = "This_is_Dynamic_Select_Form";
document.write("<input type='hidden' name='"+thisFormCheckString+"'>");
function FindThisFormName()
{
    var d = document;
    var n = d.forms.length;
    if(n == 0)return 0;

    for(var i=0;i<n;i++)
    {
        var e = d.forms[i].elements;
        for(var x=0;x<e.length;x++)
        {
            if(e[x].name == thisFormCheckString)
            return i;
        }
    }

    return "_Nothing_";
}

thisFormName = FindThisFormName();// 현재폼
if(thisFormName == "_Nothing_")
{
    var FormIsCreated = "Dynamic_Select_Form";
    thisFormName = FormIsCreated;
    document.write("<form name='"+FormIsCreated+"'>");
}

function CreateSecondSelect()
{
    var f = document.forms[thisFormName];
    var n = f[FirstSelectName].selectedIndex;
    var l = SecondSelectText[n].length;
    f[SecondSelectName].options.length = l;

    for(var i=0;i<l;i++)
    {
        f[SecondSelectName].options[i].text = SecondSelectText[n][i];
        f[SecondSelectName].options[i].value = SecondSelectValue[n][i];
    }
    f[SecondSelectName].selectedIndex=0;
}
//-->
</script>


<Script Language='JavaScript'>
document.write("<form name='change'>");
document.write("<select name='"+FirstSelectName+"' onChange='CreateSecondSelect()'>");
for(var i=0;i < FirstSelectText.length;i++)
document.write("<option value='"+FirstSelectValue[i]+"'>"+FirstSelectText[i]+"</option>");
document.write("</select>");
<!--
document.write("<select name='"+SecondSelectName+"'>");
document.write("<option value=''></option>");
document.write("</select>");

document.write("<input type=button value='눌러' onclick='find()'> ");

if(FormIsCreated) document.write("</form>");

CreateSecondSelect();
</script>


<Script Language='JavaScript'>
f= document.change;
function find()
{
 alert(f[SecondSelectName].value);
}
</script>
1차 셀렉트박스에 onchane에 함수넣고
2차 셀렉트 박스들은 div none으로 숨겨놨다가 onchange되면 block으로 보여지게 하는 방법으로 하면 어떨까요?

스크립트가 한결 간편해 질것같은데요..
먼저 답변 주신분들 대단히 감사합니다.

헌데 제가 무지해선지 해답을 못찾겠네요 ㅠ;;

write.skin.php 파일을 첨부했습니다. ;;

문제가 무엇인지 고수분들은 쉽게 아실거 같은데..

부탁드려요 ㅠㅠ;
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT