2010-01-13 6 views
0

내 웹 사이트에서 사용자는 장르별로 게임을 필터링 할 수 있습니다. 사용자가 선택 상자에서 장르를 선택하고 제출을 누르면 페이지는 GET을 사용하여 필터가 무엇인지 확인합니다. 이제 필터가 잘 작동합니다. 문제는 선택 상자의 선택 항목이 "모두"라는 기본 항목으로 이동한다는 것입니다.제출 후 선택 상자 유지

사용자가 필터 요청을 제출하면 선택 상자에서 페이지를 다시로드 한 후 선택하십시오.

내가 할 수있는 유일한 방법은 있지만 모든 옵션에 PHP가 추가되어야합니다. PHP 또는 jQuery를 사용하여이 작업을 수행하는 간단한 방법이 있습니까?

+0

기본적으로 동일한 질문 : http://stackoverflow.com/questions/2033259/dropdown-must-retain-the-text-after-post 당신은 값 '사이 공간 = "xxx는"'과'잊었 – Gordon

답변

2

양식을 제출하기 전에 쿠키를 사용하려고하지만 bleh).

옵션 태그에 PHP를 사용하고 옵션이 선택한 옵션과 일치하는 경우 selected="selected"을 반향합니다.

이 같은하지 왜 중복 코드를 많이하지 않도록하려면 다음

<select name="test"> 
<?php 
$options = array(1 => 'Option 1', 2 => 'Option 2', 3 => 'Option 3'); 
foreach ($options as $key => $value) { 
    echo '<option value="' . $key . '"' . ($key == $_GET["test"] ? ' selected="selected"' : '') . '>' . $value . '</option>'; 
} ?> 
</select> 
+0

selected = "selected"'. – BalusC

+0

감사합니다. 모든 필터가 이제 그런 식으로 되풀이되고 내 문제가 해결되었습니다. – NessDan

+0

그의 솔루션이 XSS 안전하지 않음을 알아 두십시오. – BalusC

6

jQuery를 사용하고 싶지 않습니다. 거기 있지 않습니다.

PHP의 배열에 옵션을 넣고 반복하면됩니다. 루프 된 값이 현재 선택된 옵션과 일치하면 selected 속성을 추가하기 만하면됩니다.

예. 당신은 (하지 않는 한 당신이 그것을 필요가 없습니다 jQuery를 사용하는 클라이언트에 다시 도착하면, 선택한 옵션은 서버 측 코드에 사용할 수 있습니다 것입니다 제출 전체 양식을하고있는 가정

foreach ($options as $value => $label) { 
    echo '<option value="' . $value . '" ' . ($selected == $value ? ' selected' : '') . '>' . $label . '</option>'; 
} 
1

당신은 루프없이 그것을 할 수 있습니다를 단지 6 페이지를 렌더링 할 때 원하는 값으로 변경

 
$("#$optionId[value=6]").attr('selected','selected');