下拉菜单控制二级下拉菜单显示与隐藏JS代码

我有一个注册页面,有二个下拉菜单表单值需要存储,一个是用户类型,name为type,另一个套餐菜单有3个,name分别为taocan1,taocan2,taocan3,需... 我有一个注册页面,有二个下拉菜单表单值需要存储,一个是用户类型,name为type,另一个套餐菜单有3个,name分别为taocan1,taocan2,taocan3,需要实现当用户类型这个下拉菜单 选择不同的值后,套餐有意就会显示相应 的套餐出来,隐藏掉其他的套餐菜单,麻烦大家告知下如何实现,帮写下代码,谢谢 展开
 我来答
魔之梦魇在家6C
2011-09-04 · 超过22用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:55.9万
展开全部
联动菜单的实现方法:

1.确定数据格式:

首先,我们介绍一下创建 Option 的语法:
Code:

------------------------------------
var newOption = new Option(optionText, optionvalue);
------------------------------------

根据上面的语法,我们知道 select 选项分 optionText 和 optionvalue 两个内容,optionText 即下拉框中我们看到的选项,而 optionvalue 则是提交的实际值。比如一个选项我们看到的是 “北京”,而实际提交的值是 “010”。

为了保持一致,我们确定选项的格式为:
Code:

------------------------------------
{txt:"选项名", val:"选项值"}
------------------------------------

那么一个选项组则是:
Code:

------------------------------------
var childArr = [];

childArr['父选项值1'] = [
{txt:"选项名1", val:"选项值1"},
{txt:"选项名2", val:"选项值2"},
{txt:"选项名3", val:"选项值3"},
...
{txt:"选项名n", val:"选项值n"}
]

childArr['父选项值2'] = [
{txt:"选项名1", val:"选项值1"},
{txt:"选项名2", val:"选项值2"},
{txt:"选项名3", val:"选项值3"},
...
{txt:"选项名n", val:"选项值n"}
]
------------------------------------

其中“父选项值”是父下拉列表选中的值。

注意:[ ] 和 {} 中的值是以“,” (逗号)分隔的,但是最后一个值后面不能有 “,” (逗号),否则语法错误, PHP 程序员要特别注意 !!!

2.根据传入的数组创建选项列表:

Code:

------------------------------------
for (var i=0; i < len; i++)
{
selectObj.options[i] = new Option(optionList[i].txt, optionList[i].val);
}
------------------------------------

3.在设置选项之前,我们需要先将原有选项清空:

Code:

------------------------------------
function removeOptions(selectObj)
{
if (typeof selectObj != 'object')
{
selectObj = document.getElementById(selectObj);
}

// 原有选项计数
var len = selectObj.options.length;

for (var i=0; i < len; i++)
{
// 移除当前选项
selectObj.options[0] = null;
}
}
------------------------------------

注意,这里不是用 selectObj.options[i] 而是用的 selectObj.options[0] ,由于在 options[0] 删除后,后面的选项就会补上,因此,我们只需要 selectObj.options[0] = null 。

4.设置一个提示选择项和默认选择项:

通常我们在下拉列表中会设置一个提示选择项,如:“请选择城市”,这个选项值为空,作用只是提示用户执行选择操作。

另外,下拉列表也需要能够设置默认选择项,即在页面加载的时候,设置选中状态的项目。

完整代码如下:

-------------------------------------------------------
JS代码:
-------------------------------------------------------
<script language="JavaScript" type="text/javascript">
<!--
/*
* 说明:将指定下拉列表的选项值清空
* 作者:CodeBit.cn ( http://www.CodeBit.cn )
*
* @param {String || Object]} selectObj 目标下拉选框的名称或对象,必须
*/

function removeOptions(selectObj) {
if (typeof selectObj != 'object') {
selectObj = document.getElementById(selectObj);
}

// 原有选项计数
var len = selectObj.options.length;

for (var i=0; i < len; i++) {
// 移除当前选项
selectObj.options[0] = null;
}
}

/*
* 说明:设置传入的选项值到指定的下拉列表中
* 作者:CodeBit.cn ( http://www.CodeBit.cn )
*
* @param {String || Object]} selectObj 目标下拉选框的名称或对象,必须
* @param {Array} optionList 选项值设置 格式:[{txt:'北京', val:'010'}, {txt:'上海', val:'020'}] ,必须
* @param {String} firstOption 第一个选项值,如:“请选择”,可选,值为空
* @param {String} selected 默认选中值,可选
*/

function setSelectOption(selectObj, optionList, firstOption, selected) {
if (typeof selectObj != 'object') {
selectObj = document.getElementById(selectObj);
}

// 清空选项
removeOptions(selectObj);

// 选项计数
var start = 0;

// 如果需要添加第一个选项
if (firstOption) {
selectObj.options[0] = new Option(firstOption, '');

// 选项计数从 1 开始
start ++;
}

var len = optionList.length;

for (var i=0; i < len; i++) {
// 设置 option
selectObj.options[start] = new Option(optionList[i].txt, optionList[i].val);

// 选中项
if(selected == optionList[i].val) {
selectObj.options[start].selected = true;
}

// 计数加 1
start ++;
}

}

//-->
</script>

-------------------------------------------------------
HTML代码:
-------------------------------------------------------

<script language="JavaScript" type="text/javascript">
var cityArr = [];
cityArr['江苏省'] = [
{txt:'南京', val:'南京'},
{txt:'无锡', val:'无锡'},
{txt:'徐州', val:'徐州'},
{txt:'苏州', val:'苏州'},
{txt:'南通', val:'南通'},
{txt:'淮阴', val:'淮阴'},
{txt:'扬州', val:'扬州'},
{txt:'镇江', val:'镇江'},
{txt:'常州', val:'常州'}
];

cityArr['浙江省'] = [
{txt:'杭州', val:'杭州'},
{txt:'宁波', val:'宁波'},
{txt:'温州', val:'温州'},
{txt:'湖州', val:'湖州'}
];

function setCity(province) {
setSelectOption('city', cityArr[province], '-请选择-');
}
</script>

<select name="province" id="province" onchange="if(this.value != '') setCity(this.options[this.selectedIndex].value);">
<option value="">-请选择-</option>
<option value="江苏省">江苏省</option>
<option value="浙江省">浙江省</option>
</select> 省

<select name="city" id="city">
<option value="">-请选择-</option>
</select> 市
百度网友a7339fa40
推荐于2016-04-13 · TA获得超过703个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:244万
展开全部
给你个写死了的吧,活的你要自己去绑定SQL了。
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function Selcet(){
var select_user = window.document.getElementById("select1");
var select_tao = window.document.getElementById("select2");
var value = select_user.value;
while(select_tao.options.length)
{
select_tao.options[select_tao.options.length -1] = null;
}
if(value==1)
{
select_tao.options.add(new Option("用户套餐1",1))
}
if(value==2)
{
select_tao.options.add(new Option("用户套餐2",2))
}
if(value==3)
{
select_tao.options.add(new Option("用户套餐3",3))
}
if(value==4)
{
select_tao.options.add(new Option("用户套餐4",4))
}
if(value==0)
{
select_tao.options.add(new Option("用户套餐1",1))
select_tao.options.add(new Option("用户套餐2",2))
select_tao.options.add(new Option("用户套餐3",3))
select_tao.options.add(new Option("用户套餐4",4))
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
用户类型: <select id="select1" onchange="Selcet()">
<option value="0">--请选择--</option>
<option value="1">用户类型1</option>
<option value="2">用户类型2</option>
<option value="3">用户类型3</option>
<option value="4">用户类型4</option>
</select>
套餐菜单: <select id="select2">
<option value="1">用户套餐1</option>
<option value="2">用户套餐2</option>
<option value="3">用户套餐3</option>
<option value="4">用户套餐4</option>
</select>
</div>
</form>
</body>
</html>
更多追问追答
追问
这个写得很好,谢谢。
麻烦再帮写个用单选框来控制菜单显示内容的,也就是把上面的用户类型的下拉菜单 改为单先框。
追答
checkbox???点击不同的checkbox显示不同的用户套餐??
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Xit丶纨绔gg
2018-03-30 · 超过15用户采纳过TA的回答
知道答主
回答量:61
采纳率:75%
帮助的人:7.9万
展开全部
建议你了解一下OnChange事件,适合下拉的联动,不要总想着坐享其成,读再复杂的代码也不如自己写一点简单的DEMO,收获的不仅仅是喜悦,还有自信
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式