<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>
<?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>
这是一个跟你相同的问题你去看看.ok?
数据结构有所不同,所以修改如下
<?
$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>
采用将select中的值与select1中值进行组合,如:tt&kk其中&为分隔符!
当选中select中的值时,就从上面那个字符串提取第一个为tt的字符,并将其进行分解,存入select1中就可以
<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>