【问题标题】:dropdown value reverts to default value after selected php选择php后下拉值恢复为默认值
【发布时间】:2015-03-02 10:53:11
【问题描述】:

我正在尝试使用 php 创建一个下拉列表。我正在使用 onchange="this.form.submit();"作为代码的一部分。我想在同一页面上显示结果。

选择下拉值后,会显示该值,但所选值会恢复为第一个值。

   <form action="" method="post">
   <select name="q" onchange="this.form.submit();">
   <option value="0" >Select One</option>
   <option value="1" >One</option>
   <option value="2" >Two</option>
   <option value="3" >Three</option>
   <option value="4" >Four</option>
   <option value="5" >Five</option>
   </select>
   </form>

 <?php 
 if (isset($_POST['q'])) {echo 'var is now set to ' . $_POST['q'];}
 ?>

我想显示选择值并回显该值。感谢您的所有帮助!

【问题讨论】:

  • 页面是否重新加载?

标签: php jquery forms


【解决方案1】:

如果已选择该值,您需要添加 selected 属性,只需执行以下操作:

<form action="" method="post">
   <select name="q" onchange="this.form.submit();">
   <option value="0" <?php if(isset($_POST['q']) && $_POST['q']=="0") echo "selected"?>>Select One</option>
   <option value="1" <?php if(isset($_POST['q']) && $_POST['q']=="1") echo "selected"?> >One</option>
   <option value="2" <?php if(isset($_POST['q']) && $_POST['q']=="2") echo "selected"?>>Two</option>
   <option value="3" <?php if(isset($_POST['q']) && $_POST['q']=="3") echo "selected"?>>Three</option>
   <option value="4" <?php if(isset($_POST['q']) && $_POST['q']=="4") echo "selected"?>>Four</option>
   <option value="5" <?php if(isset($_POST['q']) && $_POST['q']=="5") echo "selected"?>>Five</option>
  </select>  
</form>

【讨论】:

  • 为了确保一个可行的解决方案但代码效率低下,我推荐一个基于数组的解决方案,更易于阅读并遵循简单的规则 DRY - 不要重复自己。
  • 非常感谢!该代码可以满足我的需要……接下来我将尝试使用数组方法。再次感谢!
【解决方案2】:
<option value="1" <?php if ($_POST['q']=="1") {echo "selected";}?> >One</option>

将此代码全部添加选项,但您必须为此使用数组,因为我的路很长。

【讨论】:

    【解决方案3】:

    其他答案有效,但测试每个选项效率低下。做这样的事情:

    <?php
        // put all your options into an array
        $options = array(0 => 'Select One', 1 => 'First', 2 => 'Second', 3 => 'And so on');
    ?>
    <select name="q" onchange="this.form.submit();">
    <?php
        // loop trough the elements
        foreach($options as $value => $label) {
            // test if the current value is the posted one...
            $selected = (isset($_POST['q']) && intval($_POST['q']) === $value) ? ' selected="selected"' : ''; 
            echo '<option value="'.$value.'"'.$selected.'>'.$label.'</option>';
        }
    ?>
    </select>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 2022-06-22
      • 1970-01-01
      • 2021-03-30
      • 2017-02-28
      • 2021-08-10
      • 2014-08-25
      • 2015-04-10
      相关资源
      最近更新 更多