설문조사용 Script & HTML > script

본문 바로가기
사이트 내 전체검색

script

설문조사용 Script & HTML

페이지 정보

작성자 서방님 댓글 0건 조회 195회 작성일 06-09-14 13:58

본문

<script>
    function targetUserSelect() {
        var formName = "targetUser";
        var windowW = "660";
        var windowH = "432";
        var w = screen.availWidth;
        var h = screen.availheight;
        var left = (w - windowW)/2;
        var top = (h - windowH)/2;
        window.open("./targetUserSelectForm.jsp?formName="+formName+"&userListReset="+document.form1.targetUserId.value,"freeboardUserSelectWindow","width="+windowW+", height="+windowH+", left="+left+", top="+top+", scrollbars=no, status=no, resizable=no");
    }

</script>

 

<html>
<head><title>설문 조사 작성</title>
<LINK rel="stylesheet" type="text/css" href="./../style/style.css"></LINK>
</style>
</head>

<body bgcolor='cdcdcd'>

<table border=0 cellpadding=0 cellspacing=0 width=100% height=100%>

<form name="form1" method="post" action="makeRePollAct.jsp">


    <tr valign='top'>
        <td width="100%">
            <br>

            <br><br>
            <font color='blue'>* 질문항목을 추가 하실수 있습니다.</font> <input type='button' value='질문 추가' onClick="javascript:addQustion();"><br><br>

 

            <!-- 설문 Step1 -->
            <div id="question">

            </div>
            <script>
                var index = 0;    //증가만함
                var countNum = 0;    //증가 혹은 감소
                function addQustion(typ1Value , type2Value , title , qArray)
                {
                    var fieldset = document.createElement("fieldset");
                    fieldset.id = "fld" + index;
                    var legend = document.createElement("legend");
                    var table = document.createElement("table");
                    var tr = table.insertRow();
                    var td = tr.insertCell();

                    //중복답변 radio button
                    //1
                    /**var radio = document.createElement("input");
                    radio.type = 'radio';
                    radio.value = "0";
                    var p = document.createElement("font");
                    p.innerHTML = "중복답변 허용  ";
                    p.size = "2pt";
                    td.appendChild(radio);
                    td.appendChild(p);
                    //2
                    var radio = document.createElement("input");
                    radio.type = 'radio';
                    radio.value = "1";
                    var p = document.createElement("font");
                    p.innerHTML = "중복답변 불가    ";
                    p.size = "2pt";
                    td.appendChild(radio);
                    td.appendChild(p);**/
                    tmpStr = td.innerHTML;
                    tmpStr += "속성 : <select name='type1'>";

                    if(type2Value == "2")
                    {
                        tmpStr += "<option value='2' selected>중복답변 허용</option>";
                        tmpStr += "<option value='1'>중복답변 불가</option>";
                    }
                    else
                    {
                        tmpStr += "<option value='2'>중복답변 허용</option>";
                        tmpStr += "<option value='1' selected>중복답변 불가</option>";
                    }


                    tmpStr += "</select>";
                    td.innerHTML = tmpStr;


                    //객주관신 선택 select box
                    /**
                    var select = document.createElement("select");
                    //1
                    var oOption = document.createElement("option");
                    select.options.add(oOption);
                    oOption.innerHTML = "객관식";
                    oOption.value = "0";
                    //2
                    var oOption = document.createElement("option");
                    select.options.add(oOption);
                    oOption.innerHTML = "객/주 관식 혼합";
                    oOption.value = "1";
                    //3
                    var oOption = document.createElement("option");
                    select.options.add(oOption);
                    oOption.innerHTML = "주관식";
                    oOption.value = "2";
                    td.appendChild(select);
                    **/
                    tmpStr = td.innerHTML;
                    tmpStr += "<select name='type2' id='qSelect"+ index +"' onChange="javascript:changedType(document.all.exam"+index+" , this.value);">"

 

                    if (type2Value == "2")
                    {
                        tmpStr += "<option value='1'>객관식</option>"
                        tmpStr += "<option value='2' selected>객/주 관식 혼합</option>"
                        tmpStr += "<option value='3'>주관식</option>"
                    }
                    else if (type2Value == "3")
                    {
                        tmpStr += "<option value='1'>객관식</option>"
                        tmpStr += "<option value='2'>객/주 관식 혼합</option>"
                        tmpStr += "<option value='3' selected>주관식</option>"
                    }
                    else
                    {
                        tmpStr += "<option value='1' selected>객관식</option>"
                        tmpStr += "<option value='2'>객/주 관식 혼합</option>"
                        tmpStr += "<option value='3'>주관식</option>"
                    }

 


                    tmpStr += "</select>"
                    td.innerHTML = tmpStr;


                    //질문 input=text
                    var tr = table.insertRow();
                    var td = tr.insertCell();
                    var lable = document.createElement("font");
                    lable.size = "2pt";
                    lable.innerHTML = "질문 : ";
                    td.appendChild(lable);
                    var qInput = document.createElement("input");
                    qInput.id = "qsit_title";
                        if(title != null && title != undefined)
                            qInput.value = title;
                    qInput.style.width = '400';
                    td.appendChild(qInput);

                    var addExample = "<input type='button' value='문항추가' onClick="javascript:addExam(document.all.exam"+index+");">";
                    var tmpStr = td.innerHTML;
                    tmpStr = tmpStr  + addExample;
                    td.innerHTML = tmpStr;


                    //문항입력될 장소.
                    var tr = table.insertRow();
                    var td = tr.insertCell();
                    var p = document.createElement("p");
                    p.style.marginLeft = '44';
                    p.id = 'exam'+index;
                    p.tmpAtt = index;
                    td.appendChild(p);

                    //legend태그안의 내용
                    var font = document.createElement("font");
                    font.size = "2pt";
                    font.color = "red";
                    font.innerHTML = "<b>질문 "+ (parseInt(countNum) + 1) +" </b>";

                    legend.appendChild(font);
                    var tmpStr = legend.innerHTML;
                    var input = "<input type='button' value='삭제' onClick="javascript:delFieldset('fld"+ index +"');">";
                    tmpStr = tmpStr + input;
                    legend.innerHTML = tmpStr;

                    fieldset.appendChild(legend);
                    fieldset.appendChild(table);
                    question.appendChild(fieldset);


                    //문항 default 4개 추가
                    if(title == null || title == undefined || title == "")
                    {
                        addExam(eval("document.all.exam"+index));
                        addExam(eval("document.all.exam"+index));
                        addExam(eval("document.all.exam"+index));
                        addExam(eval("document.all.exam"+index));
                    }
                    else
                    {
                        if(qArray != undefined)
                        {
                            for (var i = 0; i < qArray.length ; i++)
                            {
                                addExam(eval("document.all.exam"+index) , qArray[i]);
                            }
                        }
                    }
                    index++;
                    countNum++;
                }

                //타입변경
                function changedType(inForm , inValue)
                {
                    if(inValue == "3")
                    {
                        inForm.innerHTML = "";
                    }
                }

                //질문삭제
                function delFieldset(inForm)
                {
                    if(confirm("해당질문을 삭제하시겠습니까?"))
                    {

                        var fldArr = question.getElementsByTagName("fieldset");
                        for(var i = 0 ; i < fldArr.length ; i++)
                        {
                            if(fldArr[i].id == inForm)
                            {
                                question.removeChild(fldArr[i]);
                                countNum--;
                            }
                        }

                        //레이블 넘버링 다시!!
                        var fldArr = question.getElementsByTagName("fieldset");
                        for(var i = 0 ; i < fldArr.length ; i++)
                        {
                            var legend = fldArr[i].getElementsByTagName("legend");
                            var font = legend[0].getElementsByTagName("font");
                            font[0].innerHTML = "<b>질문"+  (i+1) +" </b>";
                        }

                    }
                }

                //문항추가
                function addExam(inForm , inValue)
                {

                    var qSelect = eval("document.all.qSelect" + inForm.tmpAtt);
                    if(qSelect.options[qSelect.selectedIndex].value == "3")
                    {
                        alert("주관식 질문에서는 문항을 추가하실수 없습니다.");
                        return;
                    }

                    var inputArr = inForm.getElementsByTagName("input");
                    var tmpIndex = 0;
                    if(inputArr != undefined)
                    {
                        for(var i = 0 ; i < inputArr.length ; i++)
                        {
                            if(inputArr[i].type == "text")
                                tmpIndex++;
                        }
                    }
                    else
                    {
                        tmpIndex = 0;
                    }

                    var div = document.createElement("div");
                    div.id = inForm.id + "_" + (tmpIndex+1);

                    var font = document.createElement("font");
                    //font.innerHTML = "문항 "+ (parseInt(tmpIndex) + 1) +" : ";
                    font.innerHTML = "문항 : ";
                    font.size = "2pt";
                    div.appendChild(font);

                    var input = document.createElement("input");
                    input.id = 'qsitd_detail';
                    if(inValue != null && inValue != undefined)
                        input.value = inValue;
                    input.style.width = '350';
                    div.appendChild(input);

                    //문항삭제버튼
                    var btn = "<input type='button' value='삭제' onClick="javascript:delExam("+inForm.id+" , '"+inForm.id + "_" + (tmpIndex+1)+"');">";
                    var tmpStr = div.innerHTML;
                    tmpStr = tmpStr + btn;
                    div.innerHTML = tmpStr;


                    inForm.appendChild(div);

 

                }

                //문항삭제
                function delExam(inForm , divID)
                {
                    var div = inForm.getElementsByTagName("div");
                    for(var i = 0 ; i < div.length ; i++)
                    {
                        if(div[i].id == divID)
                            inForm.removeChild(div[i]);

                        if(divID == null || divID == undefined)
                            inForm.removeChild(div[i]);
                    }

                    //문항레이블 넘버링 다시
                    /**
                    var font = inForm.getElementsByTagName("font");
                    for(var i = 0 ;  i < font.length ; i++)
                    {
                        alert(font[i].innerHTML);
                        font[i].innerHTML = "asdfasdfadsf";
                    }
                    **/

                }

                function goSubmit()
                {
                    var frm = document.form1;
                    frm.action = 'makeRePollAct.jsp';

                    //각각의 질문의 문항갯수를 세어 업데이트
                    var fieldset = question.getElementsByTagName("fieldset");
                    for(var i = 0 ; i < fieldset.length ; i++)
                    {
                        var input = fieldset[i].getElementsByTagName("input");
                        var countNum = 0;
                        for(var k = 0 ; k < input.length ; k++)
                        {
                            if(input[k].id == "qsit_title")
                                input[k].name = "qsit_title";

                            if(input[k].id == "qsitd_detail")
                                input[k].name = "qsitd_detail";


                            if(input[k].id == "qsitd_detail")
                                countNum++;
                        }

                        var input2 = document.createElement("input");
                        input2.name = "quesition_count";
                        input2.value = countNum;
                        input2.type = "hidden";
                        fieldset[i].appendChild(input2);
                    }


                    //입력값 유효성검사
                    if(!checkValidation(frm.qsqs_title , 'N' , 300 , "설문제목을 입력하여주십시오." , "설문제목은 최대150자(한글기준)까지 입력 하실 수 있습니다.")) return;

                    var input = frm.getElementsByTagName("input");
                    for(var i = 0 ; i < input.length ; i++)
                    {
                        //질문 qsit_title
                        if(input[i].id == "qsit_title")
                        {
                            if(!checkValidation(input[i] , 'N' , 300 , "질문을 입력하여주십시오." , "질문은 최대150자(한글기준)까지 입력 하실 수 있습니다.")) return;
                        }

                        //문항 qsitd_detail
                        if(input[i].id == "qsitd_detail")
                        {
                            if(!checkValidation(input[i] , 'N' , 300 , "문항 내용을 입력하여주십시오." , "문항은 최대150자(한글기준)까지 입력 하실 수 있습니다.")) return;
                        }
                    }

 

 

 

                    if (frm.targetUserId.value == "")
                    {
                        frm.targetUserId.value = "'G:All'";
                    }

                    if (frm.targetUserId.value == "'G:All'")
                    {
                        if (confirm("조사 대상자가 전사원인지 확인 해 주시기 바랍니다.nn계속 진행 하시겠습니까?"))
                        {
                            frm.submit();
                        }
                        else return;
                    }


                    frm.submit();
                }

            </script>


        </td>
    </tr>
</form>
</table>
</body>
</html>
<p align='center'>
    <input type='button' value="등록" style="width:100%;height:30"onClick="javascript:goSubmit();">
</p>
<script>
    var frm = document.form1;

            //신규등록 초기화
            addQustion();

 

</script>


<script>
    function trim(str) //문자열 trim 처리
    {
        var count = str.length;
        var len = count;
        var st = 0;
        while ((st < len) && (str.charAt(st) <= ' ')) {
            st++;
        }
        while ((st < len) && (str.charAt(len - 1) <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < count)) ? str.substring(st, len) : str ;
    }


    function strLength(field)//필드(String) 길이 관련
    {
        field.value = trim(field.value);

        var Length = 0;

        var Nav = navigator.appName;
        var Ver = navigator.appVersion;

        var IsExplorer = false;

        var ch;

        if ( (Nav == 'Microsoft Internet Explorer') && (Ver.charAt(0) >= 4) ) {
            IsExplorer = true;
        }

        if(IsExplorer) {

            for(var i = 0 ; i < field.value.length; i++) {

                ch = field.value.charAt(i);

                if ((ch == "n") || ((ch >= "ㅏ") && (ch <= "히")) ||
                        ((ch >="ㄱ") && (ch <="ㅎ"))) { //한글일경우 2byte씩 계산
                    Length += 2;
                } else {
                    Length += 1;
                }
            }
        } else {
            Length = field.value.length ;
        }

        return Length;
    }

    function checkValidation(inForm , nullAble , maxSize , nullMsg , maxMsg)
    {
        if(nullAble == "N")
        {
            if(strLength(inForm) == 0)
            {
                inForm.focus();
                alert(nullMsg);
                return false;
            }
        }

        if(strLength(inForm) > maxSize)
        {
            inForm.focus();
            inForm.select();
            alert(maxMsg);
            return false;
        }

        return true;
    }
</script>

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
119
어제
225
최대
1,347
전체
154,878
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.