【问题标题】:Select-form, make the option stay selected after submit选择表单,提交后使选项保持选中状态
【发布时间】:2014-06-14 00:30:23
【问题描述】:

我有这个表格:

<form method="post">
<fieldset>
    <select name="taskOption" required>
    <option value="" disabled selected>Choose group</option>

    <?php

    while($hej < count($hejsan)) {
        echo '<option value=' . $hej . '>' . $hejsan[$hej] . '</option>';
        $hej++;
    }

    ?>

    </select>


    <input type="submit" value="Find bookings">
</fieldset>
</form>

当我按下提交按钮时,选择/选项将重置为默认值,我该如何更改它并使其保持为我选择的那个?

【问题讨论】:

    标签: php select input while-loop echo


    【解决方案1】:

    您将需要查看您选择的选项并选择相应的选项selected。由于您的表单指向同一页面,您可以查看$_POST的内容。

    P.S.:另外,您会发现在每个选项后回显换行符很有用,以使输出更具可读性。

    【讨论】:

      【解决方案2】:

      试试这个:

      <?php
      $taskOption = '';
      if (isset($_POST['taskOption']) {
        $taskOption = $_POST['taskOption'];
      }
      ?>
      <form method="post">
      <fieldset>
          <select name="taskOption" required>
          <option value="" disabled selected>Choose group</option>
      
          <?php
      
          while($hej < count($hejsan)) {
              if ($hey == $taskOption) {
                  echo "<option value={$hey} selected>{$hejsan[$hej]}</option>";
              } else {
                  echo "<option value={$hey}>{$hejsan[$hej]}</option>";
              }
              $hej++;
          }
      
          ?>
      
          </select>
      
      
          <input type="submit" value="Find bookings">
      </fieldset>
      </form>
      

      【讨论】:

        【解决方案3】:

        在一个 if else 语句中。如果选项值等于select,则添加selected="selected"

        这是一个示例代码。可能是操作符错了,我总是把大于和小于操作符混淆。

        <?php
        
        $option_value = 5;
        
        for($i=0; $i > 10; $i++){
            if($option_value == 5){
                echo '<option value="'.$i.'" selected="selected">Item number'.$i.' is selected</option>';
            } else {
                echo '<option value="'.$i.'">Item number'.$i.'</option>';
            }
        }
        
        
        ?>
        

        【讨论】:

          【解决方案4】:

          试试这个

           if (isset($_POST['taskOption'])) {
              $Option = $_POST['taskOption'];
             }
          while($hej < count($hejsan)) {
                  if($hej==$_POST['taskOption']){
                     $selected = "selected=selected";
                   }else{
                     $selected = "";
                   }
              echo '<option value="' . $hej . '" '.$selected .'>' . $hejsan[$hej] . '</option>';
              $hej++;
          }
          

          【讨论】:

          • 谢谢!这行得通,首先有点困惑,因为当我尝试它时我的页面变为空白,但你忘记了')'。它应该说 if(isset($_POST['taskOption']))
          猜你喜欢
          • 1970-01-01
          • 2013-08-29
          • 2017-08-30
          • 1970-01-01
          • 1970-01-01
          • 2016-07-13
          • 2017-09-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多