提交后保留选择框

时间:2010-01-13 17:28:02

标签: php jquery select combobox filter

在我的网站上,用户可以按类型过滤游戏。当用户从选择框中选择一个流派并点击提交时,该页面使用GET来查看过滤器是什么。现在过滤器工作正常,问题是选择框的选择变为默认选项(其中显示“全部”。)

我想要它,以便在用户提交过滤器请求后,选择框将在页面重新加载后保留该选择。

我只能想到这样做的一种方法,但它需要在每个选项中添加PHP。有没有更简单的方法可以用PHP或jQuery做到这一点?

3 个答案:

答案 0 :(得分:6)

您不希望使用jQuery执行此操作。那里不是。

在PHP中使用数组中的选项并循环遍历它。如果循环值与当前选定的选项匹配,则只需添加selected属性。

E.g。

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

答案 1 :(得分:2)

假设你正在做一个完整的表单提交,所选的选项只能用于服务器端代码,一旦它返回到客户端使用jQuery就不会有这个(除非你尝试使用表格提交前的饼干,但是没有。)

如果选项与所选选项匹配,我会在选项标签中使用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>

答案 2 :(得分:1)

你可以在没有循环的情况下完成它只需将6更改为渲染页面时所需的任何值

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