我希望在用户选择</select>选项后,在我的<select>表单中选择最后选择的选项

时间:2012-09-30 15:20:32

标签: php javascript html

<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”在下拉菜单列表中显示为已选中。实现这一目标的最佳方法是什么?

4 个答案:

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