我的下拉列表显示为空白,然后当我选择下拉列表的值时显示相同的值,但是我必须先显示下拉列表的值,然后单击按钮时,相应的值应该显示
我正在做一个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";
}
?>
<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'];?>";
<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>
答案 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>