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

时间:2018-12-10 10:59:13

标签: javascript php html

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

我正在做一个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 :(得分:0)

我认为您的做法有误: 您的代码应如下所示

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

答案 1 :(得分:0)

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

$_POST变量仅在提交POST表单时才能被“访问”,因此,当不提交POST表单时,$_POST['course']将是未定义的。如果要使用持久性,也要使用相对变量,请使用$_GET

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

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

(如果未设置value,将导致错误,请确保使用PHP中的if语句为此设置例外) 但是还需要从网址中获取值。 因此您的网址中必须包含?course=<course_value>,例如:

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

点击here了解有关POST与GET请求的更多信息

答案 2 :(得分: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元素之后

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

答案 3 :(得分:0)

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