Html & Script

수정화면 출력시 셀렉트 박스 자동 선택 편하게 하기

페이지 정보

본문

수정 폼 코딩하는 것 중에서 셀렉트 박스가 있으면 자동선택하도록 해줘야 하는 부분을
자바스크립트를 이용해서 편하게 하는 방법을 알려드립니다.
물론 아시는 분이 많으시겠지만 모르시는 분들을 위해 적습니다.

일단은 아래와 같은 셀렉트 폼이 있습니다.
<select name="test">
  <option value="">--선택--</option>
  <option value="1">1번</option>
  <option value="2">2번</option>
  <option value="3">3번</option>
  <option value="4">4번</option>
</select>

보통 사용하시는 방법이 출력 내용을 배열에 담고서 루프를 돌리면서 하나씩 값을
비교하여 selected 태그를 출력하여 선택하도록 하거나 항목이 적으면 일일이 if문으로
비교를 하여서 할 것입니다.
아니면 다른 방법으로 <script>document.form.test.value='<?=$row[test]?>'</script>
와 같이 해도 자동으로 선택하도록 할 수는 있습니다.(이 방법도 괜찮으나 입력폼과 수정폼
을 같이 사용할 때는 문제가 됨...값이 없으면 셀렉트 박스가 아무것도 선택안되고 비어버림)

이걸 좀더 편하게 함수로 만들어 사용하도록 하는 방법은...
<script>
function setSelect(obj,value){
    if(value){
      var str = "document.all['"+obj+"'].value = '"+value+"';";
      eval(str);
    }
}
</script>
이런 함수를 하나 선언하고 셀렉트 박스 밑에다가
<script>setSelect("test","<?=$row[test]?>");</script>
이렇게 해주면 자동으로 3번 항목이 선택됩니다.($row[test] = 3일때)

괜히 쓰고 나니 별거아닌거 같네여...^^:


------------------------------------------------------------
저렇게 자바스크립트로 하면 수정확인 버튼을 눌러 submit 을 했다가 여러가지 문제로 다시 document.location.back() 같은걸 하게 됐을때 submit 하기 전의 내용이 아닌 수정을 시작할때의 값으로 리셋되버리지 않나요? 예전에 그런 문제로 저걸 사용 안했던 것 같은데...
-------------------------------------------------------------

selected[$row[test]] ="selected";

<select name=test>
<option value=1 <?echo selected[1]?>>
<option value=2 <?echo selected[2]?>>
</select>

--------------------------------------------------------------

위에 소스랑 비슷한데 제가 쓰는걸 함 올려보져.
디비에서 value와 텍스트 출력부분을 불러온다치거
셀렉트 되어야 할 값이 $sel1, $sel2라고 치면
$sql = "select val, text from sometable order by orderfield";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result)) {
echo "<select name=test multiple>";
while($row = mysql_fetch_row($result)) {
$selected = (($row[0] == $sel1) || ($row[0] == $sel2))?"selected":"";
echo "<option value='".$row[0]."' $selected >$row[1]</option>";
}
echo "</select>";
}
걍 일케 돌려버립니다. 멀티셀렉트의 경우 선택되는 값이 두개 이상이므로 선택된 값만 배열처리해서 비교처리 해주면 되구요. 위 코딩에는 지금 막코딩한거라서 걍 두개만 설정하구 했슴다. 참고만 하세염.

관련자료

등록된 댓글이 없습니다.
Today's proverb
노래의 비밀은 노래하는 사람의 목소리 진동과 사람의 마음의 떨림 사이에서 발견된다. (칼릴 지브란)