select 질문드립니다.

select 질문드립니다.

QA

select 질문드립니다.

본문

현재 1번 select를 선택하면 2번 select에 해당 항목이 나오는 식으로 작업이 되어있습니다.

소스는 아래와 같습니다.

 

*script 부분

 

<script>            

            function setCategory2(){
                if(document.getElementById('sel1').value == "1"){
                    document.getElementById('sel2').length = 1;
                    document.getElementById('sel2').options[1] = new Option("급여");
                    document.getElementById('sel2').options[1].value = "급여";
                    document.getElementById('sel2').options[2] = new Option("지급수수료_활동비");
                    document.getElementById('sel2').options[2].value = "지급수수료_활동비";
                    document.getElementById('sel2').options[3] = new Option("복리후생비");
                    document.getElementById('sel2').options[3].value = "복리후생비";
                    document.getElementById('sel2').options[4] = new Option("예수금");
                    document.getElementById('sel2').options[4].value = "예수금";
                    document.getElementById('sel2').options[5] = new Option("보험료");
                    document.getElementById('sel2').options[5].value = "보험료";
                    document.getElementById('sel2').options[6] = new Option("지급임차료");
                    document.getElementById('sel2').options[6].value = "지급임차료";
                    document.getElementById('sel2').options[7] = new Option("수도광열비");
                    document.getElementById('sel2').options[7].value = "수도광열비";
                }
                if(document.getElementById('sel1').value == "2"){
                    document.getElementById('sel2').length = 1;
                    document.getElementById('sel2').options[1] = new Option("여비교통비");
                    document.getElementById('sel2').options[1].value = "여비교통비";
                    document.getElementById('sel2').options[2] = new Option("통신비");
                    document.getElementById('sel2').options[2].value = "통신비";
                    document.getElementById('sel2').options[3] = new Option("차량유지비");
                    document.getElementById('sel2').options[3].value = "차량유지비";
                    document.getElementById('sel2').options[4] = new Option("운반비");
                    document.getElementById('sel2').options[4].value = "운반비";
                    document.getElementById('sel2').options[5] = new Option("교육훈련비");
                    document.getElementById('sel2').options[5].value = "교육훈련비";
                    document.getElementById('sel2').options[6] = new Option("도서인쇄비");
                    document.getElementById('sel2').options[6].value = "도서인쇄비";
                    document.getElementById('sel2').options[7] = new Option("회의비");
                    document.getElementById('sel2').options[7].value = "회의비";
                    document.getElementById('sel2').options[8] = new Option("소모품비");
                    document.getElementById('sel2').options[8].value = "소모품비";
                    document.getElementById('sel2').options[9] = new Option("지급수수료_기타");
                    document.getElementById('sel2').options[9].value = "지급수수료_기타";
                    document.getElementById('sel2').options[10] = new Option("광고선전비");
                    document.getElementById('sel2').options[10].value = "광고선전비";
                    document.getElementById('sel2').options[11] = new Option("업무추진비");
                    document.getElementById('sel2').options[11].value = "업무추진비";
                    document.getElementById('sel2').options[12] = new Option("행사비");
                    document.getElementById('sel2').options[12].value = "행사비";
                    document.getElementById('sel2').options[13] = new Option("지구환경개선사업비");
                    document.getElementById('sel2').options[13].value = "지구환경개선사업비";
                    document.getElementById('sel2').options[14] = new Option("나눔실천사업비");
                    document.getElementById('sel2').options[14].value = "나눔실천사업비";
                    document.getElementById('sel2').options[15] = new Option("교육사업비");
                    document.getElementById('sel2').options[15].value = "교육사업비";
                    document.getElementById('sel2').options[16] = new Option("문화행사사업비");
                    document.getElementById('sel2').options[16].value = "문화행사사업비";
                    document.getElementById('sel2').options[17] = new Option("네트워크사업비");
                    document.getElementById('sel2').options[17].value = "네트워크사업비";
                    document.getElementById('sel2').options[18] = new Option("발간사업비");
                    document.getElementById('sel2').options[18].value = "발간사업비";
                }
            }
        </script>

 

*html부분

 

<select name="wr_14[]" onchange="setCategory2()" id="sel1">
   <option value="">= 선택 =</option>
   <option value="1">고정비</option>
   <option value="2">변동비</option>
</select>
<select name="wr_11[]" id="sel2">                        
    <option value="">= 계정 =</option>                        
</select>

 

여기서 내용 추가버튼 클릭시 위의 폼이 계속해서 추가되는 형식으로 만들었는데요

추가되는 부분은 아래와 같습니다.

 

*script 부분

 

<script type="text/javascript">
            $(function() { 
                $("#addTR").click(function () { 
                    var row = "<tr>"; 
                    row += "<th scope='row'><label for='wr_12'><strong class='sound_only'>필수                             </strong></label></th>"; 
                    row += "<td class='wr_content' colspan='3'>";
                    row += "<select name='wr_14[]' onchange='setCategory2()' id='sel1'>";
                    row += "<option value=''>= 선택 =</option>";
                    row += "<option value='1'>고정비</option>";
                    row += "<option value='2'>변동비</option>";
                    row += "</select>";
                    row += " <select name='wr_11[]' id='sel2'>";
                    row += "<option value=''>= 계정 =</option>";
                    row += "</select>";
                    row += " <input type='text' name='wr_12[]' style='width:500px;' placeholder='지출 내역을 입력해주세요' required>";
                    row += " <input type='text' name='wr_13[]' value='<?php echo $wr_6 ?>' onkeydown='onlyNumber(this)' placeholder='비용 (숫자만 입력)' required> 원 <span style='color:#ff0000;'></span>";
                    row += "</td>";
                    row += "<td><span>삭제</span></td>"; 
                    row += "</tr>"; 
                    $("#table").append(row); }); 
                $("#table").on("click", "span", function() { $(this).closest("tr").remove(); 
                }); 
            }); 
        </script> 

 

*html 부분

<p><span id="addTR" style="cursor:pointer;">내용 추가</span></p>

 

제가 작업한 소스는 이렇습니다.

문제는 최초 1번 select와 2번 select를 선택하고 내용 추가를 클릭해 폼을 하나 더 추가한 후

추가된 폼의 1번 select를 선택하면 그것이 추가된 2번 select에 이벤트를 발생시켜야 하는데

최초 있었던 폼의 2번 select에 영향을 주는것입니다.

 

id가 다 같아서 이런 현상이 발생하는것으로 예상은 됩니다만 이 문제를 어떻게 해결해야 할 지 

답답해서요;;; 힌트를 좀 주셨으면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 1

말씀 그대로 id를 달리 해 주거나 id 대신 class를 이용해도 될거 같구요.

문제는 새로 생길 폼의 id(class) 이름을 계속 달리해 줄 수있게끔 자바스크립트를 구현하면 될거 같네요.

예를 들어 처음에 sel1 이었다면 추가버튼 누를 때 sel1_1 이 된다거나..하는 식으로 구현하시면 될거 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 150
QA 내용 검색

회원로그인

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