<form method="get" action="">
<select name="name" onchange='this.form.submit()'>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="location" onchange='this.form.submit()'>
<option value="x">x</option>
<option value="y">y</option>
</select>
</form>
我选择选项'a'并且它工作正常,但是如果我选择'x','a'值会从URL中消失,我该如何保留所有值?
编辑:同样在提交表单时,如何确保所选值仍然在选择菜单中保持选中状态?
由于
答案 0 :(得分:5)
提交表单会将目标页面加载到窗口中(在这种情况下,目标页面与您所在的页面相同)。当用户从列表中选择一个项目时,我强烈建议不提交表单;这不是用户期望发生的事情。
但是如果你这样做了,你必须跟踪用户选择的“到目前为止”服务器端的字段,然后在selected
标签上设置相应的option
属性他们之前选择的价值,例如在生成表单时:
<option value='a' selected>a</option>
但同样,最好让他们做出选择,然后用某种按钮提交表格。如果您希望列表的内容根据他们目前所选择的项目进行更改,您可以使用客户端JavaScript(可能与服务器的Ajax查询结合使用)来实现这一目标。
答案 1 :(得分:0)
以下是对selfURL()函数的快速更新,该函数可帮助您解决问题。
function selfURL()
{
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
$uri = $_SERVER['REQUEST_URI'];
$querystring = empty($_SERVER['QUERY_STRING']) ? '' : '?'.$_SERVER['QUERY_STRING'];
return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'].$url.$querystring;
}
答案 2 :(得分:0)
将form
标记更改为:
<form method="get" action="<?= _SERVER["REQUEST_URI"] ?>">