首页 文章

如何保留下拉值作为提交后选择的值

提问于
浏览
0

我的下拉显示空白然后当我选择下拉值时显示相同的值,但我必须先显示下拉值作为选择然后当我点击按钮时相应的值应该显示

我正在做一个Php程序

<form class="form-horizontal" name="form" method="post" action="<?php $_PHP_SELF?>">
                                                    <label for="courseDisp" class="col-sm-2" style="margin-top:10px;">Course : </label>

                                                            <?php
                                                            $course="SELECT * from course";
                                                            $res= $conn->query($course);
                                                            if($res->num_rows>0)
                                                            {
                                                                echo '<select name="courseDisp" id="courseDisp" class="form-control col-sm-3" style="margin-top:8px;display:inline;padding:10px;">';
                                                                echo '<option value="0" selected> -- SELECT --</option>'; 
                                                                while($row=$res->fetch_assoc())
                                                                {
                                                                echo '<option value='.$row["course_id"].'>'.$row['shortname'].'</option>';
                                                                }
                                                                echo '</select>';
                                                            } else {
                                                            echo "0 result";
                                                        }

                                                            ?>

                                                    &nbsp;&nbsp;

                                                    <label for="yearDisp" class="col-sm-2" style="margin-top:10px;">Year : </label>


                                                    <?php
                                                            $year="SELECT distinct(year) from syllabus";
                                                            $res= $conn->query($year);
                                                            if($res->num_rows>0)
                                                            {
                                                                echo '<select name="yearDisp" id="yearDisp" class="form-control col-sm-3" style="margin-top:8px;display:inline;padding:10px;">';
                                                                echo '<option value="0">-- SELECT --</option>';
                                                                while($row=$res->fetch_assoc())
                                                                {
                                                                echo '<option value='.$row["year"].'>'.$row['year'].'</option>';
                                                                }
                                                                echo '</select>';
                                                            } else {
                                                            echo "0 result";
                                                        }


                                                            ?>
<script type="text/javascript"> 

document.getElementById('courseDisp').value = "<?php echo $_POST['courseDisp'];?>";     
document.getElementById('yearDisp').value = "<?php echo $_POST['yearDisp'];?>";
&nbsp;

                                                    <input type="submit" class="btn col-sm-2" style="margin-left:15px;margin-top:10px;width:60px;font-weight:bold;font-size:15px;" value="GO" name="btnGo" id="btnGo" />

                                                </form>

4 回答

  • 0

    这是因为在您提交表单之前没有 $_POST 变量 .

    只要提交POST表单, $_POST 变量只能是'accessed',所以当表单未提交时, $_POST['course'] 将是未定义的 . 如果要使用持久性,还要使用相对变量,请使用 $_GET .

    这可以通过以下方式完成:

    <script type="text/javascript">
        document.getElementById('course').value =<?php echo $_GET['course'];?>";
    </script>
    

    (如果未设置值,这将导致错误,请确保使用PHP中的if语句为此做出异常),但也需要从URL中获取值 . 所以你的网址需要 ?course=<course_value> ,例如:

    https://example.com/index.php?course=Course%201
    

    有关POST与GET请求的更多信息,请单击here

  • 0

    您应该直接编写所选属性,而不是使用javascript设置值 .

    <select name="course">
    <?php foreach ($options as $key => $value): ?>
        <option value="<?= $key ?>"<?php if ($key == $_POST['course']) echo " selected" ?>>
            <?= $value ?>
        </option>
    <?php endforeach; ?>
    </select>
    

    如果你必须在javascript中执行此操作,请确保使用正确的语法 . 你的例子在行尾有一个错误的 " . 如果你想将vars输出到javascript中,你也应该使用 json_encode . 最后一件事 - 如果你不操纵

    <select name="course">...</select>
    ...
    <script type="text/javascript">
        document.getElementById('course').value = <?= echo json_encode($_POST['course']) ?>;
    </script>
    
  • 0

    我认为你是以错误的方式做到的:你的代码应该是这样的

    <script type="text/JavaScript">
        var valueSelected=document.getElementById('course').value;
       alert(valueSelected);// do here according to the need
     </script>
    
  • 0

    需要保持 <option value="">-Select-</option>

相关问题