下拉框之间的内容如何能互相联系?

mytiger 2001-12-07 08:00:17
有几个下拉框。我想让一个下拉框在选中一个选项后,别的下拉框只出现对应的选项。别的都不显示。举例:第一个有两个值:a,b。第二个有3个值:1,2,3。a对应1,2。b对应3。我希望选择a后,第二个框就只有1,2让选,3不出现。选择b后,第二个框就只有3让选,1,2不出现。最好反过来也行。即先选了1后,只有a出现,b不出现等等。
有办法吗?
...全文
178 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
karma 2001-12-08
  • 打赏
  • 举报
回复
you know, my xml-based solution can be used in any level correlation

<script language="javascript">
var aListValue = new Array(2);
aListValue["a"] = new Array("1","2");
aListValue["b"] = new Array("3");

var nCurIndex = null;

function setupList()
{
if (nCurIndex != document.frmtest.name1.selectedIndex)
{
nCurIndex = document.frmtest.name1.selectedIndex;

var sValue = document.frmtest.name1.options[nCurIndex].value;

var i;
//remove existing list
for (i=document.frmtest.name2.options.length-1; i >=0 ; i--)
document.frmtest.name2.options.remove(i);

for (i=0; i < aListValue[sValue].length;i++)
{
var opt = new Option(aListValue[sValue][i],aListValue[sValue][i]);
document.frmtest.name2.options.add(opt);
}

}

}
</script>

<body onload="setupList()">
<form name="frmtest" action="" method="post">
List1: <select name="name1" onchange="setupList()">
<option value="a">a</option>
<option value="b">b</option>
</select><br>
List2:
<select name="name2">
</select><br>
</form>
</body>
mytiger 2001-12-08
  • 打赏
  • 举报
回复
to:lanzhengpeng2(兰征鹏)
你写的代码我怎么看不懂?麻烦你根据我下面的代码写一下好吗? 

<form method="POST" name="form" action="sample.asp">

<p><select size="1" name="name1">
<option value="a">a</option>
<option value="b">b</option>
</select><select size="1" name="name2" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>

</select></p>
<p><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2"></p>
</form>

to:karma(无为)

能否就用javascript解决? 
mytiger 2001-12-08
  • 打赏
  • 举报
回复
谢谢。无为果然高手。不过代码技巧太高了呵呵。至少我觉得我写不出。如果是多个之间要发生联系那恐怕更困难了。
mytiger 2001-12-08
  • 打赏
  • 举报
回复
谢谢。无为果然高手。不过代码技巧太高了呵呵。至少我觉得我写不出。如果是多个之间要发生联系那恐怕更困难了。
karma 2001-12-08
  • 打赏
  • 举报
回复
play with my xml-based solution:

<script language="javascript">
var xmlID = "xmlcmbtree";
var cmbPrefix = "xmlcmb";
var nMaxLevel = 3;
var tblName = "tbl";
function CreateList(nLevel)
{
var doc = document.all(xmlID).documentElement;

var nodes, nIndex, node;
nodes = doc.childNodes;
for (var i=1; i < nLevel;i++)
{
nIndex = document.all(cmbPrefix + i).selectedIndex;
node = nodes[nIndex];
nodes = node.childNodes;
}

var cmb = document.all(cmbPrefix + nLevel);
if (!cmb)
{
cmb = document.createElement("SELECT");
cmb.id = cmbPrefix + nLevel;
cmb.onchange = new Function("ChangeSelection(" + nLevel + ")");

//document.body.appendChild(cmb);
var cell = document.all(tblName).rows[1].insertCell();
cell.appendChild(cmb);


cell = document.all(tblName).rows[0].insertCell();

var label = document.createElement("SPAN");
label.style.fontWeight = "bold";
label.style.color = "red";
label.innerHTML = nodes[0].nodeName + ":";

cell.appendChild(label);

// document.body.insertBefore(label,cmb)

}

cmb.options.length = 0;



for (i=0; i < nodes.length;i++)
{
var opt = new Option(nodes[i].getAttribute("text"),nodes[i].getAttribute("value"));
cmb.options.add(opt);
}

ChangeSelection(nLevel);
}

function ChangeSelection(nLevel)
{
if (nLevel < nMaxLevel)
CreateList(nLevel+1);
}

</script>
<body onload="CreateList(1);">
<xml id="xmlcmbtree">
<country>
<province text="Jiang Su" value="Jiang Su">
<city text="Nan Jing" value="Nan Jing">
<street text="Xin Jie Kou" value="Xin Jie Kou" />
<street text="Dong Jia Xiang" value="Dong Jia Xiang" />
</city>
<city text="Su Zhou" value="Su Zhou">
<street text="Guan Qian Jie" value="Guan Qian Jie" />
<street text="Re Min Lu" value="Re Min Lu" />
</city>
</province>
<province text="Beijing" value="Beijing">
<city text="Beijing" value="Beijing">
<street text="Xin Jie Kou" value="Xin Jie Kou" />
<street text="Si Huan Lu" value="Si Huan Lu" />
<street text="Xue Yuan Lu" value="Xue Yuan Lu" />
</city>
</province>
<province text="Hei Bei" value="Hei Bei">
<city text="Shi Jia Zhuang" value="Shi Jia Zhuang">
<street text="Ren Min Lu" value="Ren Min Lu" />
</city>
</province>
</country>
</xml>
<table id="tbl" border="1" cellspacing="0" cellpadding="0"">
<tr></tr>
<tr></tr>
</table>
</body>
bihu 2001-12-08
  • 打赏
  • 举报
回复
有这个插件可以实现这种效果的
http://joy.zhgnet.com/bihu/bbs/viewthread.php?tid=603
lanzhengpeng2 2001-12-07
  • 打赏
  • 举报
回复
On下拉框1SelChange()
{
if(下拉框1.GetCurSel() == a)
{
下拉框2.ResetContext();
下拉框2.Add(1);
下拉框2.Add(2);
}
else if(下拉框1.GetCurSel() == b)
{
下拉框2.ResetContext();
下拉框2.Add(3);
}
}

On下拉框1SelChange()
{
...
}
mytiger 2001-12-07
  • 打赏
  • 举报
回复
就是html里的那种下拉框,系统给的。frontpage里的现成的。
wangyupacket 2001-12-07
  • 打赏
  • 举报
回复
你的下拉框是自己做的还使用的控件

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧