<form method="get" action="index.php">
<select name="choice" size="1" onchange="this.form.submit()">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">C</option>
</select></form>
上面的代码显示了一个选项下拉菜单,例如a,b或c,用户可以点击。在用户从下拉菜单中单击a,b或c后,该选项将在表单中提交,并且页面将使用定义为a,b或c的新$ _GET变量“choice”重新加载。我希望用户上次选择的选项现在是列出的默认选定选项。例如,在用户点击下拉菜单中的“b”后,“b”在下拉菜单列表中显示为已选中。实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
输出表单时,请执行以下检查:
<option value="a"<?php if ($_GET['choice'] == "a") {?> selected <?php } ?>>a</option>
然后,您需要将其提取到为您执行条件代码的函数中,或者使用提供的值,标签和已清理的数据输出整个选项元素,并在内部执行检查。
答案 1 :(得分:1)
你走了:
<?php
if (isset($_REQUEST['choice'])) {
$selected_choice = $_REQUEST['choice'];
}
else {
$selected_choice = "none";
}
?>
<html>
<head>
</head>
<body>
<form method="get" action="">
<select name="choice" size="1" onchange="this.form.submit()">
<option value="a" <?php if($selected_choice == "a"){ print "selected='selected'"; } ?> >a</option>
<option value="b" <?php if($selected_choice == "b"){ print "selected='selected'"; } ?> >b</option>
<option value="c" <?php if($selected_choice == "c"){ print "selected='selected'"; } ?> >C</option>
</select>
</form>
</body>
</html>
答案 2 :(得分:1)
避免意大利面条代码(或至少减少它)的另一种方法是通过Javascript设置它,如:
<html>
<body>
<form method="get" action="test.htm">
<select name="choice" id="choice" size="1" onchange="this.form.submit()">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
</form>
<script>
document.getElementById('choice').value = 'b';//replace with something like: <?php echo $_GET['choice'] ?>
</script>
</body>
</html>
恕我直言,这种方法比在每个选项标签中进行测试更好。
答案 3 :(得分:0)
尝试在会话中保存已发布的选择选项,如下所示
<?php $_SESSION['current_select'] = $_REQUEST['posted_select_option']?>
在页面加载检查中如下
<script>
var currentSelect = <?php echo $_SESSION['current_select']; ?>
$(document).ready(function(){
if(currentSelect!="")
$("#choice").val(currentSelect);
});
</script>
考虑到您的选择标记的ID如下所示
<select name="choice" id="choice" size="1" onchange="this.form.submit()">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">C</option>
</select>