<form name=f1 method=post>
<?PHP
$email="[email protected]";
if(ereg("^[a-zA-Z0-9]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$",$email))
echo $email."正确<br>";
else
echo $email."不正确<br>";$maintype=array(0=>"","a","b","c");
$sub1=array(0=>"","a1","a2","a3");
$sub2=array(0=>"","b1","b2","b3");
$sub3=array(0=>"","c1","c2","c3");echo '<select name=s1 onchange="submit()">';
for($i=0;$i<count($maintype);$i++)
{
if($_POST[s1]==$maintype[$i])
echo '<option value="'.$maintype[$i].'" selected>'.$maintype[$i];
else
echo '<option value="'.$maintype[$i].'">'.$maintype[$i];
}
echo '</select>';echo '<select name=s2>';
if($_POST[s1]=='a')
$arr=$sub1;
else if($_POST[s1]=='b')
$arr=$sub2;
else if($_POST[s1]=='c')
$arr=$sub3;
else
$arr=array();for($i=0;$i<count($arr);$i++)
{
echo '<option value="'.$arr[$i].'">'.$arr[$i];
}
echo '</select>';
?>
</form>

解决方案 »

  1.   

    sorray,前面有几行email的代码请删除
      

  2.   

    http://www.csdn.net/expert/topic/974/974562.xml?temp=.5239221
    这是一个跟你相同的问题你去看看.ok?
      

  3.   

    http://www.csdn.net/expert/Topicview1.asp?id=723099
    数据结构有所不同,所以修改如下
    <?
    $maintype=array(0=>"","a","b","c");
    $sub1=array(0=>"","a1","a2","a3");
    $sub2=array(0=>"","b1","b2","b3");
    $sub3=array(0=>"","c1","c2","c3");?>
    <select name=maintype></select>
    <select name=sub></select>
    <input name=result><script>
    var arrSel=["maintype","sub"];//arrSel定义了要修改的下拉框
    var i=0,arrData=[];//arrData中搁的是数据,每条都显示各级的数据
    <?
    for($i=0;$i<count($maintype);$i++){
    $var="sub".$i;
    if($$var){
    $tmp=$$var;
    for($j=0;$j<count($tmp);$j++){

    ?>
    arrData[i++]=["<?=$maintype[$i]?>","<?=$tmp[$j]?>"]
    <?
    }
    }else{
    ?>
    arrData[i++]=["<?=$maintype[$i]?>",""]
    <?

    }
    }
    ?>
    </script>
    <script>
    function qswhInit(num){
    /******* by qiushuiwuhen(2002-5-15) ********/
    var i,j,arrTemp=[];
    for(i=0;i<num;i++)arrTemp[i]=document.all(arrSel[i]).options[document.all(arrSel[i]).selectedIndex].text
    if(num==arrSel.length){//这里处理最后的数据。
    document.all("result").value="选中了("+arrTemp.join(",")+")";return;
    }
    with(document.all(arrSel[num])){
    length=0
    for(i=0;i<arrData.length;i++){
    for(j=0;j<num;j++)if(arrTemp[j]!=arrData[i][j])break;
    if(j!=num)continue;
    if(length==0||options[length-1].text!=arrData[i][num])
    options[length++].text=arrData[i][num];
    }
    onchange=new Function("qswhInit("+(num+1)+")");
    onchange();
    }
    }
    qswhInit(0);//初始化
    </script>
      

  4.   

    我给你讲一下思路吧:
    采用将select中的值与select1中值进行组合,如:tt&kk其中&为分隔符!
    当选中select中的值时,就从上面那个字符串提取第一个为tt的字符,并将其进行分解,存入select1中就可以
      

  5.   

    给你个例子,改改数据就可以了<select id=oSel1 onchange=Chg()>
    <option> CPU
    <option> 硬盘
    <option> 主板
    </select>
    <select id=oSel2>
    </select><script>//二维数据表格(二维数组)
    var Table2dim = new Array(
        new Array("Intel PIII", "AMD Athlon", "Intel Celoron"),
        new Array("IBM", "Westwood", "Quantum"),
        new Array("Asus", "Gigabyte"),
        null
    );//Chg() 和 ChgOptions(i) 都是通用的,只要修改上面的 oSel1 的选项和 Table2dim 的内容即可
    function Chg()
    {
        ChgOptions(document.all.oSel1.selectedIndex);
    }
    function ChgOptions(iSel1)
    {
        if ( 0 <= iSel1 && iSel1 < Table2dim.length )
        {
            var oSel2 = document.all.oSel2, i;        //删除所有旧选项(不知道有没有不用循环的删除办法)
            for ( i = oSel2.options.length; -- i >= 0; )
                oSel2.options.remove(i);        //创建新关联选项
            var Table1dim = Table2dim[iSel1];
            for ( i = 0; i < Table1dim.length; i ++ )
            {
                var o = document.createElement('<option>');
                o.text = Table1dim[i];
                oSel2.options.add(o);
            }
        }
    }//初始化
    ChgOptions(0);
    </script>
      

  6.   

    也謝謝alexxing(赤铸) .版主快來幫忙,帖子死了.這應該也是csdn的一個Bug.