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

다중셀렉트 처리 문의드립니다. 채택완료

케레니스 8년 전 조회 3,120

안녕하세요~!

 

정말 쌩초짜가 끙끙대며 혼자 실무를 이어나가는 상황에서,

여기 계신 개발자 분들이 얼마나 대단하신 분들인지 새삼 느끼고 있습니다.

 

아무리 혼자 머리를 굴려보고 검색을 해봐도 원하는 해답을 찾을 수 없어 이렇게 질문을 남기게 됐습니다.

많은 고수분들의 소중한 답변을 부탁드려봅니다.

 

==============================================================================

 

우선 상단에 아래와 같은 형태로 string 값을 쪼개어 구분을 주었습니다.

 

</p><p><?php</p><p><span style="font-size: 11pt;">$gmarket_id = explode(",",$member['mb_11']); // mb_11 필드에 저장된 값들을 쪼갠다</span> </p><p>?></p><p>

 

그 다음 본문에서 아래와 같이 처리합니다.

 

</p><p><select name="gmarket" id="gmarket_id" disabled="true"></p><p style="margin-left: 40px;"><span style="font-size: 11pt;"><option value="">선택하세요</option></span></p><p style="margin-left: 40px;"><?php</p><p style="margin-left: 40px;"><span style="font-size: 11pt;">     for ($m=0; $m<count($gmarket_id); $m++) {</span></p><p style="margin-left: 40px;">?></p><p>          <option><?php echo $gmarket_id[$m]; ?></option></p><p style="margin-left: 40px;"><?php } ?></p><p></select></p><p><select name="gmarket2" id="gmarket_id" disabled="true"></p><p>           <option value="">선택하세요</option></p><p>           <?php</p><p>                for ($m=0; $m<count($gmarket_id); $m++) {</p><p>           ?></p><p>           <option><?php echo $gmarket_id[$m]; ?></option></p><p>           <?php } ?></p><p></select></p><p><select name="gmarket3" id="gmarket_id" disabled="true"></p><p>           <option value="">선택하세요</option></p><p>           <?php</p><p>                for ($m=0; $m<count($gmarket_id); $m++) {</p><p>           ?></p><p>           <option><?php echo $gmarket_id[$m]; ?></option></p><p>           <?php } ?></p><p></select></p><p>

 

여기서 질문 드리고자 합니다.

 

코드를 보시면 아시겠지만,

여러개의 셀렉트박스가 있는데, 첫번째 박스를 선택하면 두번째 박스의 disabled 가 false 되고

두번째 박스를 선택하면 세번째 박스의 disabled 가 false 되게 하였습니다. (jQuery로 구현하였습니다)

 

여기서 문제가 생기는데,

첫번째 박스에서 하나의 <option> 값을 선택하면,

두번째 박스가 enabled 되면서 첫번째 박스에서 선택한 <option> 값을 '제외한' 나머지 값들을 노출하고 싶습니다.

 

마찬가지로, 첫번째와 두번째 박스의 값이 선택되면

세번째 박스는 앞에서 선택한 <option> 값을 '제외한' 나머지가 노출되게 되겠죠~

 

단순하게 미리 <option> 들이 지정되어 있었다면,

선택하는 경우의 수 마다 간단하게 이벤트처리를 할 수 있었겠지만,

사용자에게서 사전에 입력받은 값을 for문으로 뿌려주는 저런 형태에서는

어떻게 해야할 지 여러가지로 시도를 해봤지만 번번히 실패하더군요..ㅠㅠ  

 

처음에는 별 것 아니라고 생각하고 덤볐다가 여기서 더 이상 진도가 안나가는 사태가 발생했습니다.. ;;

쌩초짜인 저의 실력 부족인 탓입니다.

 

고수분들의 소중한 답변을 기다리겠습니다.

감사합니다.

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

답변 1개

채택된 답변
+20 포인트

</p><p>$(function() {
    $("select[name^='gmarket']").on("change", function(i) {
        var nxt = $(this).index() + 2;
        var opt = $("option:gt(0)", $(this)).not(":selected").clone();
        $("option:gt(0)", $(this).nextAll()).remove();
        $("select[name='gmarket" + nxt + "']").attr("disabled", false).append(opt);
    });
});</p><p>

http://nyaongii.dothome.co.kr/temp/wrid_179326.html">http://nyaongii.dothome.co.kr/temp/wrid_179326.html 

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

답변에 대한 댓글 1개

케레니스
8년 전
남겨주신 내용 잘 봤습니다. 링크 걸어주신 곳에서 해봐도 잘 되긴하는데

왜 제가 적용하면 안되는걸까요... 하하 ㅠㅠㅠ
일단은 남겨주시는 코드를 공부해서 어떻게든 적용해봐야겠네요~ㅠㅠ

소중한 답변 감사드립니다!

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

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

로그인