级联下拉列表
2009-06-07 15:57
344 查看
前不久有一个朋友问我有没有现成的级联下拉列表实现(虽然建议他自己写一个,但我还是又写了一遍),应用中经常会用到,google或baidu一下其实就有许多好例子。虽然如此,也希望自己能为程式世界尽点微博之力,贴出一段实现二层级联的javascript代码,希望能对有此需求的人有所帮助,谢谢。
第一级(toplayer)要放在第二级的下面,next属性才能正常复制。
每一层的数据全是标准JSON格式数据,可很方便的修改来通过AJAX从服务器动态取出下一级数据,而且稍加修改就可支持3联或N联。
<script type="text/javascript"> //第二级: var secondlayer1= [ {value:"second_1_xxx1", text:"second_1_xxxx1"}, {value:"second_1_xxx2", text:"second_1_xxxx1", selected:true}, {value:"second_1_xxx3", text:"second_1_xxxx2"}, {value:"second_1_xxx4", text:"second_1_xxxx3"} ]; var secondlayer2= [ {value:"second_2_xxx1", text:"second_2_xxxx1"}, {value:"second_2_xxx2", text:"second_2_xxxx1"}, {value:"second_2_xxx3", text:"second_2_xxxx2", selected:true}, {value:"second_2_xxx4", text:"second_2_xxxx3"} ]; var secondlayer3= [ {value:"second_3_xxx1", text:"second_3_xxxx1"}, {value:"second_3_xxx2", text:"second_3_xxxx1", selected:true}, {value:"second_3_xxx3", text:"second_3_xxxx2"}, {value:"second_3_xxx4", text:"second_3_xxxx3"} ]; var secondlayer4= [ {value:"second_4_xxx1", text:"second_4_xxxx1"}, {value:"second_4_xxx2", text:"second_4_xxxx1"}, {value:"second_4_xxx3", text:"second_4_xxxx2"}, {value:"second_4_xxx4", text:"second_4_xxxx3", selected:true} ]; //第一级: var toplayer= [ {value:"xxx1", text:"xxxx1", next:secondlayer1}, {value:"xxx2", text:"xxxx2", next:secondlayer2}, {value:"xxx3", text:"xxxx3", next:secondlayer3, selected:true}, {value:"xxx4", text:"xxxx4", next:secondlayer4} ]; var topElcr; //toplayerSelector; var secondElcr; //secondlayerSelector; window.onload=function(){ topElcr = document.getElementById("toplayerSelector"); secondElcr = document.getElementById("secondlayerSelector"); /* 构建第一层 */ for(var i in toplayer){ var o = toplayer[i]; var opt = new Option(o.text,o.value); opt.selected=o.selected?true:false; topElcr.options.add(opt); } /* 构建默认选中的下一层 */ selectAndBuildNextLayer(); } function selectAndBuildNextLayer(){ var opts = secondElcr.options; /* 清除第二层数据 */ for(var i=opts.length-1;i>=1;i--)opts[i]=null; var index = topElcr.selectedIndex-1; /* 如果没有选择任何项目,返回 */ if(index<0)return; /* 构建下一层 */ var secondlayer = toplayer[index].next; for(var i in secondlayer){ var o = secondlayer[i]; var opt = new Option(o.text,o.value); opt.selected=o.selected?true:false; opts.add(opt); } } </script> <select id="toplayerSelector" name="toplayerSelector" onchange="selectAndBuildNextLayer()"> <option value="">请选择...</option> </select> <select id="secondlayerSelector" name="secondlayerSelector"> <option value="">请选择...</option> </select>
第一级(toplayer)要放在第二级的下面,next属性才能正常复制。
每一层的数据全是标准JSON格式数据,可很方便的修改来通过AJAX从服务器动态取出下一级数据,而且稍加修改就可支持3联或N联。
相关文章推荐
- Ajax详解及其案例分析之如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
- 级联下拉列表
- JavaScript解析XML实现两级级联下拉列表
- SharePoint 2010 级联下拉列表 (Cascading DropDownList)
- mvc用ViewData实现下拉列表的级联
- 自己编写的基于jQuery的级联 下拉列表
- 完整中英文世界国家级联下拉列表插件【前端版】
- javascript级联下拉列表实例代码(自写)
- 图文并茂之SharePoint 2010 级联下拉列表
- js下拉列表级联案例
- 十二、CascadingDropDown——级联下拉列表
- JS级联下拉列表,DOM编程
- javascript做省市级联的下拉列表
- JavaScript解析XML实现两级级联下拉列表
- 级联下拉列表
- 级联下拉列表
- JavaScript解析XML实现多级级联下拉列表
- 级联下拉列表
- struts2标签实现下拉列表级联操作
- ajax绑定静态下拉列表,级联跳转