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

先来看看效果:

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的用法,所以就加上了。

Javascript实现动态菜单添加相关推荐

  1. java菜单动态加载功能_Javascript实现动态菜单添加

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

  2. java省市县联动 下拉框选择_原生JavaScript实现动态省市县三级联动下拉框菜单实例代码...

    像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能: 先给大家展示下测试结果: 未做 ...

  3. Krpano全景:在javascript中动态添加/删除/修改(位置)热点(向后端写入)

    目录 接下来看在JS中的方法: 1.手动添加热点(点击图上添加点) 2.查找热点 3.修改热点 4.删除热点 其他方法 作为管理员,在管理全景时会涉及到各个标签的操作,本篇文章介绍在JS中对热点的操作 ...

  4. Krpano学习:在javascript中动态添加/删除/修改(位置)热点(向后端写入)

    作为管理员,在管理全景时会涉及到各个标签的操作,本篇文章介绍在JS中对热点的操作,其数据可传到后端并写入数据库. 首先先给一个在xml文件中的动态热点添加的方法,下面的代码直接把两个url图片换了就可 ...

  5. VB.net MenuStrip控件通过数据库生成多级动态菜单并添加单击事件

    VB.net MenuStrip控件通过数据库生成多级动态菜单并添加单击事件 个人小白,一个多月前想通过 MenuStrip控件调用数据库数据生成多级联动下拉菜单,结果网上的资料都只是部分代码可用.经 ...

  6. JavaScript实现动态添加页面的表格行数并获取数据

    JavaScript实现动态添加页面的表格行数并获取数据,获取后的数据按照特殊的方式拼接存入数据库,用的时候再把它解析出来就行了. <table cellpadding="0" ...

  7. “动吧“ - crud 练习 part7 - Shiro安全框架简介 - 58~60 - 、[扩展] - 动态菜单 - 60

    名词: ------------------------------------------- subject - 主体.起因 - (登录到==>登录成功后 , 全部的记录) principal ...

  8. JS打字效果的动态菜单代码分享

    这篇文章主要介绍了JS打字效果的动态菜单,推荐给大家,有需要的小伙伴可以参考下. 这是一款基于javascript实现的打字效果的动态菜单特效代码,分享给大家学习学习. 小提示:浏览器中如果不能正常运 ...

  9. AngularJS之动态菜单操作指令

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在我们创建一个angularJS应用的时候,菜单往往往是不可或缺的元素之一.也许在我们静态菜单的时候不会发现在指令中操作 ...

最新文章

  1. (转)TabContainer要实现服务器端回传
  2. 迈向智慧化 物联网规模应用不断拓展
  3. 什么叫dfs文件服务器,什么是DFS(分布式文件系统)以及DFS的优点
  4. Vue 框架-05-动态绑定 css 样式
  5. 去哪儿-10-city-ajax
  6. XenServer 6.5实战系列之十三:图形界面安装Linux Redhat系统
  7. 为什么金融分析需要应用python语言_python入门第一篇:python语言简介
  8. ES6中的React生命周期详解
  9. 做好一个系统分析师、项目经理75条准则
  10. iOS UICollectionView 注册步骤、使用方法以及 各种问题 和坑点
  11. mcgs组态软件中字体如果从左到右变化_MCGS组态软件课件-第5章.ppt
  12. STM32F103单片机跑马灯程序/寄存器
  13. Oracle开窗函数
  14. 图形文件的自由转换:DXF转PLT、DWG转其它格式......
  15. word自动生成目录和调整页码字体的方法
  16. 通过JS检测360浏览器
  17. 第164篇,陌生人和贵人(扶摇生财思维)
  18. STM32-NVIC中断优先级分组-中断优先级设置
  19. 未被定义的 “智能座舱”,如何将产业化进行到底
  20. 在zedGraph曲线上显示数据,显示波峰,寻峰算法的实现

热门文章

  1. Hbase 常见错误总结——摘自忘了
  2. Win32 控件篇(3)
  3. 支付宝支付 第十一集:支付回调成功后的监听
  4. 给出一种符号表的组织方式和结构设计,要考虑数组类型和函数(不得与课件上的雷同)
  5. 数据结构1:单链表反转java代码解释
  6. java params 参数_将params作为参数传递给类扩展方法的函数
  7. vba thisworkbook 切换表 执行 速度慢_带你初探VBA事件的大门—工作簿事件
  8. python处理日志_python日志处理(logging模块)
  9. ffmpeg 找不到bin_FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
  10. 单片机中存储器扩展位地址线怎么算_关于单片机外扩存储器的编址方法