博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript实现动态菜单添加
阅读量:6839 次
发布时间:2019-06-26

本文共 4261 字,大约阅读时间需要 14 分钟。

在注册信息的时候,常常需要通过下拉菜单让用户选择,而且希望用户在第一个下拉框做的选择,影响第二个下拉框的内容。有时候,如果第一个下拉框不作出选择,第二个下拉框根本不会页面上显示,为了给用户呈现一个更清晰的页面。

先来看看效果:

Html源码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>动态改变菜单</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="SelectMenu.js"></script> </head> <body> <form action="#"> <br/> <br/> <br/> <div class="Address"> <span class="Province">Province: <select> <option value="" selected="selected">Please Choose Province</option> <option value="HeBei">HeBei</option> <option value="ShanDong">ShanDong</option> </select> </span> <span class="City" style="display:none">City: <select> </select> </span> <span class="Area" style="display:none">Area: <select> </select> </span> <br/> <br/> <span class="AddressSelect" style="display:none"> </span> </div> </form> </body> </html>
Javascript源码

$(document).ready(function () { //找到三个下拉框 var ProvinceSelect = $(".Province").children("select"); var CitySelect = $(".City").children("select"); var AreaSelect = $(".Area").children("select"); var AddressSelect=$(".AddressSelect"); //给第二个下拉框注册事件 ProvinceSelect.change(function () { //1、获取当前下拉框的值 var ProvinceValue = $(this).val(); //1.1只要第一个下拉框内容有变化,第三个下拉框就要隐藏起来 AreaSelect.parent().hide(); AddressSelect.hide(); AddressSelect.html(""); //2、如果值不为空,则显示城市下拉框 if (ProvinceValue != "") { CitySelect.html(""); $("<option value=''>Please Choose City</option>").appendTo(CitySelect); switch(ProvinceValue) { //实际项目中,这个城市数组肯定是在服务器获取的,这里为了简便,我就直接自定义了一个数组 //如果追求完美,这里还可以加一道缓存,防止重复获取 case "HeBei": var CityOfHeBei=["ShiJiaZhuang","CangZhou","LangFang"]; for(var i=0;i<CityOfHeBei.length;i++){ $("<option value='"+CityOfHeBei[i]+"'>"+CityOfHeBei[i]+"</option>").appendTo(CitySelect); } break; case "ShanDong": var CityOfShanDon=["JiNan","DeZhou","QingDao"]; for(var i=0;i<CityOfShanDon.length;i++){ $("<option value='"+CityOfShanDon[i]+"'>"+CityOfShanDon[i]+"</option>").appendTo(CitySelect); } break; } CitySelect.parent().show(); } else { CitySelect.parent().hide(); } }); //给第二个下拉框注册事件 CitySelect.change(function () { var CityValue = $(this).val(); AddressSelect.hide(); AreaSelect.parent().hide(); AddressSelect.html(""); if (CityValue != "") { AreaSelect.html(""); $("<option value=''>Please Choose Area</option>").appendTo(AreaSelect); switch(CityValue) { //实际项目中,这个区数组肯定是在服务器获取的,这里为了简便,我就直接自定义了一个数组 //如果追求完美,这里还可以加一道缓存,防止重复获取 case "ShiJiaZhuang": var AreaOfCity=["GaoXinQu","KaiFaQu","XinHuaQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break; case "CangZhou": var AreaOfCity=["XinHuaQu","YunHeQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break; case "LangFang": var AreaOfCity=["AnCiQu","GuangYangQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break; case "QingDao": var AreaOfCity=["GaoXinQu","KaiFaQu","XinHuaQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break; case "DeZhou": var AreaOfCity=["XinHuaQu","YunHeQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break; case "JiNan": var AreaOfCity=["AnCiQu","GuangYangQu"]; for(var i=0;i<AreaOfCity.length;i++){ $("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect); } break; } AreaSelect.parent().show(); } else { AreaSelect.parent().hide(); } }); AreaSelect.change(function(){ var AreaValue=$(this).val(); AddressSelect.html(""); if (AreaValue!=""){ $("<span>The Address Is --Province: "+ProvinceSelect.val()+" City: "+CitySelect.val()+" Area: "+AreaSelect.val()+"</span>").appendTo(AddressSelect); AddressSelect.show(); //alert("The Address Is Province: "+ProvinceSelect.val()+" City: "+CitySelect.val()+" Area: "+AreaSelect.val()); } }) });
这里还引用了Jquery,貌似实现这个效果,用不用都无所谓,最近为了熟悉Jquery的用法,所以就加上了。

转载地址:http://kxwul.baihongyu.com/

你可能感兴趣的文章
关于最长公共子序列的执行过程
查看>>
postgresql----JSON类型和函数
查看>>
SVN项目锁定解决方案
查看>>
[CODEVS] 2189 数字三角形W
查看>>
cannot find module 'cordova-common'
查看>>
面向对象数据库NDatabase_初识
查看>>
【转】POJ 2104 K-th Number(2)
查看>>
【转】Mutex使用方法(精辟)
查看>>
虚析构函数的使用
查看>>
将 Shiro 作为应用的权限基础
查看>>
第十一周例行报告
查看>>
ios程序连接真机调试
查看>>
A*寻路算法的探寻与改良(三)
查看>>
KVM基础功能——Cpu配置
查看>>
在C#用GDI+实现图形图像的任意变形效果(转载)
查看>>
Fork 一个仓库并同步
查看>>
Web测试实践-任务进度-Day02
查看>>
js观察者模式
查看>>
python画图matplotlib基础笔记
查看>>
windows10远程桌面连接及问题解决
查看>>