如何从php

时间:2016-06-16 18:25:06

标签: javascript php html combobox

我试图让组合框的选项消失,具体取决于来自数据库的预选选项。

当我之前问过同样的问题时,我被赋予了使用两个组合框的想法,并且根据第一个组合的值,第二个组合的选项将消失。这很有效,但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,因为我们在工作中并没有真正使用它...

1 个答案:

答案 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。