【问题标题】:I want the last selected option to be selected in my <select> form after the user selected the option我希望在用户选择选项后在我的 <select> 表单中选择最后一个选择的选项
【发布时间】:2012-09-30 23:37:23
【问题描述】:
<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 变量“选择”重新加载。我希望用户上次选择的选项现在成为列出的默认选择选项。例如,在用户从下拉菜单中单击“b”后,“b”会在下拉菜单列表中显示为选中状态。完成此任务的最佳方法是什么?

【问题讨论】:

  • 您使用的是 smarty 还是其他模板引擎?
  • 我在 index.php 文档中使用原始 html、php、javascript 和 jquery 代码

标签: php javascript html


【解决方案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】:

    当输出表单时,做如下检查:

    <option value="a"<?php if ($_GET['choice'] == "a") {?> selected <?php } ?>>a</option>
    

    然后,您希望将其提取到一个函数中,该函数要么为您执行条件代码,要么输出具有提供的值、标签和经过内部检查的数据的整个选项元素。

    【讨论】:

      【解决方案3】:

      另一种避免意大利面条式代码(或至少减少它)的方法是通过 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>
      

      恕我直言,这种方法比在每个选项标签中进行测试要好。

      【讨论】:

        【解决方案4】:

        尝试在会话中保存已发布的选择选项,如下所示

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

        【讨论】:

          猜你喜欢
          • 2021-03-11
          • 2014-06-20
          • 1970-01-01
          • 1970-01-01
          • 2018-04-13
          • 1970-01-01
          • 2017-05-04
          • 1970-01-01
          • 2021-10-26
          相关资源
          最近更新 更多