我试图根据来自数据库的预选选项使组合框的选项消失。
当我之前问过同样的问题时,我想到了使用两个组合框,并且根据第一个组合框的值,第二个组合框上的选项将会消失。这确实有效,但 Jscript 函数的问题是我必须使用 onchange 事件调用它,这意味着它无法从上一页预加载。
它曾经看起来像这样:
<select name="cbostatusHide" id="cbostatusHideID" onchange="getDropDown()">
<option selected "" ></option>
<option value="Planned"<?php if ($row['task_status']=='Planned') echo 'selected="selected"';?>>Planned</option>
<option value="Started"<?php if ($row['task_status']=='Started') echo 'selected="selected"';?>>Started</option>
<option value="Available"<?php if ($row['task_status']=='Available') echo 'selected="selected"';?>>Available</option>
<option value="Impeded" <?php if ($row['task_status']=='Impeded') echo 'selected="selected"';?>>Impeded</option>
<option value="Finished"<?php if ($row['task_status']=='Finished') echo 'selected="selected"';?>>Finished</option>
</select>
</td>
</tr>
<tr>
<td>
<select name="cbostatus" id="cbostatusID">
<option selected "" ></option>
<option value="1" <?php if ($row['task_status']=='Planned') echo 'selected="selected"';?>>Planned</option>
<option value="2" <?php if ($row['task_status']=='Started') echo 'selected="selected"';?>>Started</option>
<option value="3" <?php if ($row['task_status']=='Available') echo 'selected="selected"';?>>Available</option>
<option value="4" <?php if ($row['task_status']=='Impeded') echo 'selected="selected"';?>>Impeded</option>
<option value="5" <?php if ($row['task_status']=='Finished') echo 'selected="selected"';?>>Finished</option>
</select>
</td>
</tr>
函数:
function getDropDown() {
var optionDrop = document.getElementById("cbostatusHideID");
var numberDrop = document.getElementById("cbostatusID");
if (optionDrop.options[optionDrop.selectedIndex].value == "Planned" || optionDrop.options[optionDrop.selectedIndex].value == "Started" || optionDrop.options[optionDrop.selectedIndex].value == "Available"){
numberDrop.options[4].style.display = "none";
}else if (optionDrop.options[optionDrop.selectedIndex].value == "Impeded" || optionDrop.options[optionDrop.selectedIndex].value == "Finished"){
numberDrop.options[4].style.display = "block";
}
}
这样做的作用是,每当我选择“已开始”、“计划”或“可用”时,“受阻”选项均不可用。
但是,由于我在问题开始时解释的缺乏成功,我决定应用相同的逻辑概念,但在 PHP 中使用开关。
最大的问题是,我是 PHP 的绝对初学者,我不知道如何正确地做到这一点,所以它不起作用。以下是一些摸索让我得到的结果:
<?php
switch (cbostatusHideID.selectedIndex)
{
case $row['task_status'] == 'Planned';
cbostatus.option[4].style.display = "none";
}
?>
更有经验的 PHP 用户可能会知道,这根本不起作用。那么我该如何改变它并使其成为一个合适的开关呢?
另外,请不要建议使用 Jquery,因为我们在工作中并没有真正使用它......
最佳答案
在 PHP 中 switch
的正确实现是这样的:
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}
因此,您需要修改代码:
<?php
switch ($row['task_status']) {
case 'Planned':
// do your stuff
}
?>
并且您不能按照您在代码示例中尝试的方式一起使用 JavaScript 和 PHP。
关于javascript - php中如何获取组合框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37866713/