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

셀렉트박스 선택한 값을 유지하기(?) 채택완료

부사내 7년 전 조회 15,500

최근글의 제목을 셀렉트 박스로 받아오고 있습니다.

 

각 제목을 선택하면 해당 글로 이동을 하고 있는데, 기본적으로 항상 첫번째 제목이 표시되고 있습니다.

 

1번제목

2번제목

3번제목

-

-

-

 

있을때, 3번을 셀렉트하고 페이지 이동하면 3번제목이 셀렉트박스내에 남아있게하는 방법이 있을까요?

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

답변 4개

채택된 답변
+20 포인트
7년 전

<select id="sel">

 

<script>
$('#sel').on('change', function() {
    location.href= this.value;
});
$('#sel').val(location.href);
</script>

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

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

SNS박스
7년 전

새창으로 뜨는건 onchange 옵션이 _blank로 되어 있어서 그렇습니다. 
이동된 페이지에서도 동일한 셀렉트 박스가 있는 상황이라면 

셀렉트 구문을 PHP 소스로 커스텀을 추가로 해주어야 됩니다. 
즉, 부모페이지에서 변수를 지정해서 이동페이지에서 그 변수값을 받아와서 셀렉트에 넣어주어야 됩니다. 

페이지 링크가 있으면 좀더 자세한 답변이 가능할것 같습니다. ~ 

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

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

SNS박스
7년 전

셀렉트하면 새창으로 열리면서 부모페이지가 리프레시가 되서 그런거 같은데

onchange 스크립트를 직접 넣으면 리프레시가 되지않게하면 셀렉트 부분이 선택된대로 그대로 있습니다. 

 

</p>

<p><select name="" onchange="window.open(this.options[this.selectedIndex].value,'_blank')">

<option value="링크URL#1">제목 #1</option>

<option value="링크URL#2">제목 #2</option>

<option value="링크URL#3">제목 #3</option>  

</select></p>

<p>

 

 

 

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

답변에 대한 댓글 1개

부사내
7년 전
위 소스로 해보니 우선 새창이 뜨네요. 원래 있던 창에서 셀렉트값은 선택된값 그대로 유지되는데 새창에 나온건 다시 첫번째 글제목이 나오네요.

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

7년 전

넘어오는 select 의 값을 if 문으로 체크하셔서 처리하세요.

예)

</p>

<p><select></p>

<p>    <option value="1번제목"<?php if($select==='1번제목'){echo ' selected="selected"';}?>>1번제목</option></p>

<p>    <option value="2번제목"<?php if($select==='2번제목'){echo ' selected="selected"';}?>>2번제목</option></p>

<p>    <option value="3번제목"<?php if($select==='3번제목'){echo ' selected="selected"';}?>>3번제목</option></p>

<p></select></p>

<p>

여기서 $select 는 넘어오는 select의 변수값입니다.

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

답변에 대한 댓글 2개

부사내
7년 전
옵션값이
<option value="<?php echo $list[$i]['href'];?>">



<?php echo $list[$i]['subject'];?>



</option>

이렇게 해서 각 게시글의 제목이 들어오고 있습니다. 이럴경우 어떻게 입력해야할까요?
핫워드
7년 전
[code]
<option value="<?php echo $list[$i]['href'];?>">
<?php echo $list[$i]['subject'];?>
</option>
[/code]

여기에서 옵션의 value가 <?php echo $list[$i]['href'];?> 이므로
$list[$i]['href'] 의 값을 if문으로 걸러내면 됩니다.

예 - $prev_value은 db에서 가져온 값이나 이전 페이지에서 넘어온 값을 의미합니다.
대충 이런식으로 될거 같네요.
[code]
<?php
for($i=0; $i<count($list); $i++) {
$prev_value = !empty($_GET['select의 name']) ? $_GET['select의 name'] : $db의값;
?>
<option value="<?php echo $list[$i]['href'];?>"<?php if($list[$i]['href']===$prev_value){ echo ' selected="selected"';}?>>
<?php echo $list[$i]['subject'];?>
</option>
<?php } ?>
[/code]

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

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

로그인