Q & A

질답게시판

홈 > 회원포럼 > 질답/버그/제안
질답/버그/제안

게시판 이중셀렉트 작성후 수정하면 디폴트값으로 나오는 문제

4 강끄 5 69



안녕하세요 


요즘 이중셀렉트문을 이용한 게시판을 만들고있습니다.


이중셀렉트 적용과 리스트 출력까지 잘되는데 '수정'을 하면 하위셀렉트의 값이 없어집니다 ㅠㅠ


어떻게 해야 수정할때도 하위셀렉트값을 들고올수있는지 궁금합니다.


소스는 아래와 같습니다.




<div class="form-group">
  <label class="col-sm-2 control-label" for="wr_2">제품선택</label>
  <div class="col-sm-6">
     <div class="col-sm-6" style="padding:0;">
      <select name="wr_2" id="wr_2" class="form-control input-sm" required itemname="제품군" onchange="doChange(this, 'wr_4')">
        <option value="default">제품군 선택</option>
        <option value="High Performance" <? if ($write[wr_2]=="High Performance > T9") echo "selected"; ?>>High Performance</option>
        <option value="Multi Function" <? if ($write[wr_2]=="Multi Function > T3Av2") echo "selected"; ?>>Multi Function</option>
        <option value="익스텐더" <? if ($write[wr_2]=="익스텐더") echo "selected"; ?>>익스텐더</option>
        <option value="Home WiFi System" <? if ($write[wr_2]=="Home WiFi System ") echo "selected"; ?>>Home WiFi System</option>
      </select>
    </div>


    <div class="col-sm-6">
      <select name="wr_4" id="wr_4" class="form-control input-sm" required itemname="제품명">
        <option>제품명 선택</option>
      </select>
    </div>
  </div>
</div>


<script type="text/javascript">
function doChange(srcE, targetId){
    var val = srcE.options[srcE.selectedIndex].value;
    var targetE = document.getElementById(targetId);
    removeAll(targetE);


    if(val == 'High Performance'){
        addOption('T9', targetE);
        addOption('T7', targetE);
        addOption('T5', targetE);
addOption('T9x', targetE);
        addOption('T7x', targetE);
        addOption('T5x', targetE);
    }
    else if(val == 'Multi Function'){
        addOption('T3Av2', targetE);
    }
 else if(val == '익스텐더'){
        addOption('X3d', targetE);
addOption('X3e', targetE);
    }
 else if(val == 'Home WiFi System'){
        addOption('Wide Package', targetE);
addOption('Economic Package', targetE);
addOption('Smart Package', targetE);
addOption('Powerful Pacakge', targetE);
addOption('E3', targetE);
addOption('E2', targetE);
addOption('E1', targetE);
    }
}


function addOption(value, e){
    var o = new Option(value);
    try{
        e.add(o);
    }catch(ee){
        e.add(o, null);
    }
}


function removeAll(e){
    for(var i = 0, limit = e.options.length; i < limit - 1; ++i){
        e.remove(1);
    }
}
</script>


5 Comments
M 한별아빠 04.12 21:03  
스크립트에서 페이지 출력시 doChange('<?php echo $write['wr_4'];?>', 'wr_4'); 가 실행되도록 해 주면 될 듯...
4 강끄 04.13 10:27  
스크립트에서 페이지 출력이라는 말은 view.skin.php 에서 doChange('<?php echo $write['wr_4'];?>', 'wr_4'); 뜻인가요 ?
아니면 게시물의 스크립트에 doChange('<?php echo $write['wr_4'];?>', 'wr_4');를 추가하면 되는건가요 ?
M 한별아빠 04.13 18:53  
제일 하단에 아래처러 스크립트에 들어가야 되겠죠.

<script>
 doChange('<?php echo $write['wr_4'];?>', 'wr_4');
</script>

jQuery 방식으로 넣어셔도 되고...
4 강끄 04.17 11:50  
스크립트를 추가시켜봤는데 여전히 셀렉트값이 사라지네요 ㅠㅠ
M 한별아빠 04.17 17:18  
doChange() 함수 자체 문제입니다.

함수에 보면 option 넣는 부분은 있지만, selected(선택) 처리하는 부분은 없습니다. 그러니 값이 들어가도 selected 처리가 될 이유가 없겠죠.

doChange() 함수를 따로 보완하셔야 할 듯...
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory NaverBand