【问题标题】:select dropdown value based on session variable根据会话变量选择下拉值
【发布时间】:2012-04-29 17:00:59
【问题描述】:

我有一个 php 表单,它将数据提交给另一个 php 进行验证。如果任何字段留空,验证器 php 将使用会话变量将所有预填充变量连同所有预填充变量一起发送回原始 php 表单,以便用户不必再次填充它们。

我可以像这样使用这些会话变量再次填充文本框

value="<?php echo $_SESSION['fname'] ?>"

但是如何填充下拉菜单、单选按钮和复选框?

谢谢

【问题讨论】:

  • 与 TEXT 类型的 INPUT 元素一样,您可以使用所有其他 INPUT 元素。
  • 下拉框已选择选项无输入选项

标签: php forms session drop-down-menu


【解决方案1】:

对于选择、复选框或单选框,您需要检查值是否匹配。比如:

<select name="fname">
 <option value="1" <?php if($_SESSION['fname'] == 1) echo 'selected'; ?>>1</option>
 <option value="2" <?php if($_SESSION['fname'] == 2) echo 'selected'; ?>>2</option>
</select>

如果您遍历选项字段的值会更容易:

<select name="fname">
 <?php foreach($array AS $key => $value) { ?>
  <option value="<?php echo $value; ?>" <?php if($_SESSION['fname'] == $value) echo 'selected'; ?>><?php echo $value; ?></option>
 <?php } ?>
</select>

【讨论】:

  • 不能让它工作,页面重新加载时总是选择“2”
【解决方案2】:

&lt;select&gt; 元素的选定 &lt;option&gt; 不是由它的 value= 属性确定的。为了标记一个选项被选中,&lt;option&gt; 元素必须设置selected 属性,如下所示:

<select>
    <option>1</option>
    <option selected>2</option>
    <option>3</option>
</select>

为了以编程方式执行此操作,您需要遍历选项,并手动测试正确的选项,并将selected 添加到其中。

【讨论】:

    【解决方案3】:

    ...注意到您在语句末尾的双引号放错了位置,应该是:

    <script>
        $("#fname").val("<?php echo $_SESSION['fname'] ?>");
    </script>
    

    【讨论】:

      【解决方案4】:

      使用 JQuery 有一个更简单的方法。您可以使用 .val() 设置选择,以便充分利用它。

      <script type="text/javascript">
      $("#fname").val("<?php echo $_SESSION['fname']; ?>");
      </script>
      

      不要忘记将选择的 id 以及名称设置为 fname

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 2019-05-16
        相关资源
        最近更新 更多