테스트 사이트 - 개발 중인 베타 버전입니다

select 박스 값 선택시 추가 입력창 생성 채택완료

승슝 3년 전 조회 1,897

안녕하세요...제가 append를 사용해서 select 박스의 옵션을 추가하고 있는데 여기에서 select 박스의 값이 바꼈을 때 추가 입력창이 나올 수 있도록 화면을 구현했어요!!

그런데 맨처음에 select 박스에서는 값이 바꼈을 때 입력창이 나오는데 append로 추가한 부분에서는 값을 받지 못해서 어떻게 해결하면 좋을지 여쭤봅니다!

</p>

<p><script></p>

<p>    let aryMethodNames = new Array();</p>

<p></script></p>

<p>    <div class="write_div"></p>

<p>        <div class="grid_container"></p>

<p>            <div class="grid_box">        </p>

<p>              <div></p>

<p>                  <label for="ADMINISTRATION_METHOD" style="margin-left:20px;">관련투여방법</label></p>

<p>                  <?php</p>

<p>                      $sql = "SELECT DISTINCT METHOD_TO_ADMINISTER FROM ADMINISTRATION_METHOD ";</p>

<p>                      $result = sql_query($sql);</p>

<p>                      $METHOD_TO_ADMINISTER=array();</p>

<p>                      while($row=sql_fetch_array($result)){</p>

<p>                          $METHOD_TO_ADMINISTER[]=$row['METHOD_TO_ADMINISTER'];</p>

<p>                      }?></p>

<p>                  <select id="ADMINISTRATION_METHOD0"  class="ADMINISTRATION_METHOD"  name="wr_12" style="margin-left:20px;" ></p>

<p>                      <option value="">선택하세요</option></p>

<p>                      <?php for($x=0; $x<sizeof($METHOD_TO_ADMINISTER); $x++){?></p>

<p>                          <option value="<?php echo $METHOD_TO_ADMINISTER[$x]?>" <?php echo ($write['wr_12'] == $METHOD_TO_ADMINISTER) ? " selected" : "";?>><?php echo $METHOD_TO_ADMINISTER[$x]?></option></p>

<p>                          <script></p>

<p>                              aryMethodNames.push("<?php echo $METHOD_TO_ADMINISTER[$x] ?>")</p>

<p>                          </script></p>

<p>                      <?php }?></p>

<p>                      <script></p>

<p>                          $('#ADMINISTRATION_METHOD0').val('<?=$write['wr_12']?>');</p>

<p>                      </script></p>

<p>                  </select>  </p>

<p>                </div></p>

<p>                <div id="addMethodBox0" ></div></p>

<p>            </div></p>

<p>            <div>  </p>

<p>                <div></p>

<p>                    <input type="button" id="typeButton" onclick="addBox(this)" class="frm_input" name ="addBtn" value="추가하기" style="display:inline-block; float:right; margin-right:140px; margin-top:10px;"></p>

<p>                </div></p>

<p>            </div></p>

<p>        </div></p>

<p>    </div></p>

<p> </p>

<p>    <div class="btn_confirm write_div" style="margin-right:135px;"></p>

<p>        <a href="<?php echo get_pretty_url($bo_table); ?>" class="btn_cancel btn">취소</a></p>

<p>        <button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">작성완료</button></p>

<p>    </div></p>

<p> </p>

<p>    </form></p>

<p> </p>

<p>    <script></p>

<p> </p>

<p>    let cnt = 0;                      </p>

<p> </p>

<p>    function addBox(e){</p>

<p>       </p>

<p>        if($('#ADMINISTRATION_METHOD'+cnt+'')[0].value){</p>

<p> </p>

<p>            cnt ++</p>

<p> </p>

<p>            $('.grid_box_fourth'+cnt+'').append (                        </p>

<p>                '<label for="ADMINISTRATION_METHOD" style="margin-left:25px;">관련투여방법</label><select id="ADMINISTRATION_METHOD'+cnt+'"  class="ADMINISTRATION_METHOD123" name="METHOD_TO_ADMINISTER" style="margin-left:25px;"> <option value="">선택하세요</option> </select>'                    </p>

<p>            );</p>

<p> </p>

<p>            for(let j = 0; j<aryMethodNames.length ; j++) {</p>

<p>                $('#ADMINISTRATION_METHOD'+cnt+'').append (                        </p>

<p>                    '<option value="'+aryMethodNames[j]+'">'+aryMethodNames[j]+'</option>'            </p>

<p>                );</p>

<p>                console.log(j, aryMethodNames)</p>

<p>            }</p>

<p>            $('.grid_box_fourth'+cnt+'').append (                        </p>

<p>                '<input style="width:60px; font-size:1.25em; border-radius:5px; text-align:center; margin-left:5px;" class="btnRemove" type="button" value="remove">'                    </p>

<p>            );</p>

<p>            $('.grid_box_fourth'+cnt+'').append (                        </p>

<p>                '<div id="addMethodBox'+cnt+'" ></div>'                    </p>

<p>            ); // end append                            </p>

<p>            $('.btnRemove').on('click', function () {</p>

<p> </p>

<p>                $(this).parent().remove ();</p>

<p> </p>

<p>            });</p>

<p> </p>

<p>        }</p>

<p> </p>

<p>    }</p>

<p>    document.querySelector('.ADMINISTRATION_METHOD').addEventListener('change', function(){</p>

<p> </p>

<p>        console.log("여기 어디쯤",$(this).val())</p>

<p>       </p>

<p>        $.ajax({</p>

<p>            url : " <a href="http://localhost/bbs/dataloader/data_fish_drug.php"," target="_blank" rel="noopener noreferrer">http://localhost/bbs/dataloader/data_fish_drug.php",</a></p>

<p>            type : "post",</p>

<p>            data : {</p>

<p>                cnt : cnt,</p>

<p>                type : $(this).val()</p>

<p>            },</p>

<p>            success : function(res) {</p>

<p>                $('#addMethodBox'+cnt+'').html(res)</p>

<p>                console.log("선택된 옵션",res)</p>

<p>            },</p>

<p>            error : function(err){</p>

<p>                alert(err)</p>

<p>            }            </p>

<p>        });</p>

<p>       </p>

<p>    })</p>

<p></script></p>

<p>

추가로 제가 생각하기에는 append쪽에서 option부분을 변수로 받아오면 되지 않을까해서 

php에서는 $i .= 'WHERE 1=1' 이런식으로 사용하잖아요 !! 자바스크립트에는 이런 방식은 사용하지 않는 걸까요?? 아무리 찾아봐도 보이지 않아서요

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

왜 저렇게 짜는지 이해가.. 제이쿼리 쓰실거면 제이쿼리만쓰시고 바닐라로 쓸거면 바닐라 방식으로 쓰셔요 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인