我试图让组合框的选项消失,具体取决于来自数据库的预选选项。
当我之前问过同样的问题时,我被赋予了使用两个组合框的想法,并且根据第一个组合的值,第二个组合的选项将消失。这很有效,但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,因为我们在工作中并没有真正使用它...
答案 0 :(得分:1)
在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。