2010-01-13 10 views
0

На моем сайте разрешено фильтровать игры по жанрам. Когда пользователь выбирает жанр из окна выбора и отправляет запросы, страница использует GET, чтобы узнать, что такое фильтр. Теперь фильтр работает нормально, проблема в том, что выбор блока выбора соответствует стандарту (который говорит «все».)Сохраните выбранную ячейку после отправки

Я хочу, чтобы после того, как пользователь отправил свой запрос на фильтр, поле выбора сохранит это выбор после перезагрузки страницы.

Есть только один способ, которым я мог бы это сделать, но для каждого варианта, который требуется, нужно добавить PHP. Есть ли более простые способы сделать это с помощью PHP или jQuery?

+0

в принципе тот же вопрос: http://stackoverflow.com/questions/2033259/dropdown-must-retain-the-text-after-post – Gordon

ответ

2

Предполагая, что вы делаете полную форму представить выбранный вариант только будет доступен для серверного кода, когда он получает обратно клиенту использовать JQuery у вас не будет, что (если вы пытаетесь использовать файлы cookie перед отправкой формы, но bleh).

Я бы использовал PHP в теге option и echo 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

Вы забыли пространство между 'значение =«ххх»и' выбрано = "выбрано" '. – BalusC

+0

Спасибо, все фильтры теперь повторяются так, и это решило мою проблему. – NessDan

+0

Имейте в виду, что его решение не является безопасным для XSS. – BalusC

6

Вы не хотите делать это с помощью jQuery. Там это не для.

Просто у вас есть опции в массиве в PHP и обведите его над ним. Если значение цикла соответствует выбранному в данный момент параметру, просто добавьте атрибут selected.

E.g.

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

вы можете сделать это без петли просто изменить 6 на то, что значение, которое вы хотите, когда вы предоставляете страницу

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