提交后保持选中的选择框

2021-12-23 00:00:00 select filter jquery php combobox

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

On my website, user's are allowed to filter games by Genre. When a user chooses a genre from the select box and hits submit, the page uses GET to see what the filter was. Now the filter works fine, the problem is that the select box's selection goes to the default one (Which says "All".)

我希望在用户提交过滤请求后,选择框将在页面重新加载后保留该选择.

I want it so that after a user submits their filter request, the select box will keep that selection after the page reloads.

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

There's only one way I could think of to do this but it would require adding in PHP into every option there is. Are there any simpler ways to go about doing this with PHP or jQuery?

推荐答案

假设你正在做一个完整的表单提交,选择的选项只会对服务器端代码可用,一旦它返回给客户端使用 jQuery 你不会有那个(除非你在表单提交之前尝试使用 cookie,但是 bleh).

Assuming you're doing a full form submit the selected option is only going to be available to the server-side code, once it gets back to the client to use jQuery you won't have that (unless you try to use cookies before the form submit, but bleh).

我会在选项标签中使用 PHP,如果选项与所选选项匹配,则回显 selected="selected".

I'd use PHP in the option tag and echo selected="selected" if the option matches up with the selected option.

如果你想避免大量重复的代码,为什么不做这样的事情:

If you want to avoid a lot of duplicated code why not do something like this:

<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>

相关文章