在我的网站上,用户可以按类型过滤游戏。当用户从选择框中选择一个流派并点击提交时,该页面使用GET来查看过滤器是什么。现在过滤器工作正常,问题是选择框的选择变为默认选项(其中显示“全部”。)
我想要它,以便在用户提交过滤器请求后,选择框将在页面重新加载后保留该选择。
我只能想到这样做的一种方法,但它需要在每个选项中添加PHP。有没有更简单的方法可以用PHP或jQuery做到这一点?
答案 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');