php下拉如何控制隐藏和显示

时间:2010-05-12 19:39:21

标签: php

我想控制下拉框来控制show或hide语句。我喜欢这个,但它似乎不起作用,如果我使用单选按钮,我有它工作。

可以帮我处理代码吗?哪一部分我错了?

谢谢。

$dbcnx = mysql_connect('localhost', 'root', '');
mysql_select_db('dbase');

if($_POST['gred'])$gred=$_POST['gred'];else $gred="";

<script language="JavaScript">  
function funcHide(elemHide1,elemHide2,elemHide3)
    {
        document.getElementById(elemHide1).style.display = 'none';
        document.getElementById(elemHide2).style.display = 'none';
        document.getElementById(elemHide3).style.display = 'none';
        document.getElementById(elemShow).style.visibility = 'visible';
    }

 function funcShow(elemShow1,elemShow2,elemShow3)
    {
        document.getElementById(elemShow1).style.display = 'block';
        document.getElementById(elemShow2).style.display = 'block';
        document.getElementById(elemShow3).style.display = 'block';
        document.getElementById(elemShow1).style.visibility = 'visible';
        document.getElementById(elemShow2).style.visibility = 'visible';
        document.getElementById(elemShow3).style.visibility = 'visible';
    }
   </script>

 <table>
 <tr>
        <td>Gred </td>
        <td>:</td>
        <td><select name="gred" id="gred">
          <option value="">&nbsp;</option>          
          <option value="A17" <?php if($gred=='A17')echo "selected";?>  onClick="funcShow('box1', 'box2', 'box3');">A17</option>
      <option value="A22" <?php if($gred=='A22')echo "selected";?>>A22</option>
      <option value="A27" <?php if($gred=='A27')echo "selected";?>>A27</option>
</select>

</td>
  </tr>

  <tr>
        <td>TK</td>
        <td>:</td>
        <td>        
    <select name="tk" id="tk">
    <option value="">&nbsp;</option>    
    <option value="01" <?php if($tk=='01')echo "selected";?>>01</option>
    <option value="02" <?php if($tk=='02')echo "selected";?>>02</option>
    <option value="03" <?php if($tk=='03')echo "selected";?>>03</option>
    <option value="04" <?php if($tk=='04')echo "selected";?>>04</option>
    <option value="05" <?php if($tk=='05')echo "selected";?>>05</option>
    <option value="06" <?php if($tk=='06')echo "selected";?>>06</option>
    </select>
    <?} ?>
        </td>
</tr>         
<tr>
<td colspan="2" valign="top">Status</td>
<td valign="top">:</td>
<td>
    <?php
    $qry = "SELECT * from dtable where userid='".$USER->id."'";
    $sql = mysql_query($qry);
    $row = mysql_num_rows($sql);
    if($row==0)
    { 
    ?>
    <input type=radio name="status" <?php if($status=='retake')      {?>checked="checked"<?php } ?> value="retake" onClick="funcShow('box1', 'box2', 'box3');">Retake<br /></tr> <tr>
<td colspan='2'>
<div id="box1" style="display: none;">Last Date <br> Latest Date<br>
</div></td>
<td><div id="box2" style="display: none;">: <br> : <br></div></td>
<td>
<div id="box3" style="display: none;">
<?php $rsu[lastdate] ?> <br> <?php $rsu[latestdate] ?> 
</div>
</td>

2 个答案:

答案 0 :(得分:0)

当您在下拉菜单中更改内容时,使用onChange来触发JS,而不是onClick。使用selectedIndex,您可以确定所选内容(“显示”或“隐藏”选项)并从那里开始。

提示:摆脱所有垃圾代码并将其限制为您需要的元素。尝试使其以最基本的形式工作,然后将其构建为您实际尝试的内容。这样就可以更容易地跟踪错误并找出它无法正常工作的原因。

此外,您可能需要查看jQuery。你可以在普通的旧JavaScript中做同样的事情,但是jQuery让这样的事情变得容易多了。

答案 1 :(得分:0)

不要将onClick属性放在选项标记上。您应该在select标记上使用onChange,然后传入this.value。然后根据该值,您可以决定显示/隐藏哪个“框”。只是一个简单的例子:

<script type="text/javascript">
function showHide(selValue){
    switch(selValue){
        case "A17":
            //show/hide whatever box you want.
            alert(selValue);
            break;
        default:
            //do nothing
            alert('nothing');
    }
}
</script>
<select name="gred" id="gred" onChange="showHide(this.value);">
    <option value="">&nbsp;</option>          
    <option value="A17"<?php if($gred=='A17')echo "selected";?>>A17</option>
    <option value="A22" <?php if($gred=='A22')echo "selected";?>>A22</option>
    <option value="A27" <?php if($gred=='A27')echo "selected";?>>A27</option>
</select>

现在,正如您所知,它只是警告某些值。但它很容易改变。